ФорумРазработкаБазы данных → MySQL. Как проверить существует ли таблица в бд?

MySQL. Как проверить существует ли таблица в бд?

  • Tekuto

    Сообщения: 1147 Репутация: N Группа: Адекваты

    Spritz 18 октября 2011 г. 15:35

    Необходимо перед выполнением скрипта проверить наличие таблицы в базе данных. Если она существует, то добавляем записи, если нет, то выдает сообщение об отсутствии таблицы в бд. Ползал по гуглу: советует проверять данные в таблице. Как быть, если нет данных в таблице?
  • technobulka

    Сообщения: 4540 Репутация: N Группа: Джедаи

    Spritz 18 октября 2011 г. 15:40, спустя 4 минуты 50 секунд

    if (mysql_query('DROP TABLE таблица')) echo "таблица существовала"; XD
    Высокоуровневое абстрактное говно
  • Tekuto

    Сообщения: 1147 Репутация: N Группа: Адекваты

    Spritz 18 октября 2011 г. 15:43, спустя 3 минуты 6 секунд


    if (mysql_query('DROP TABLE таблица')) echo "таблица существовала"; XD


    Это тоже видел. Мне не подходит XD
  • Frozzeg

    Сообщения: 5641 Репутация: N Группа: Джедаи

    Spritz 18 октября 2011 г. 15:45, спустя 2 минуты 10 секунд

    оно разве ошибку не выдаст при запросе в отсутствующую таблицу?
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • Tekuto

    Сообщения: 1147 Репутация: N Группа: Адекваты

    Spritz 18 октября 2011 г. 15:53, спустя 7 минут 29 секунд

    оно разве ошибку не выдаст при запросе в отсутствующую таблицу?

    Ничего не выдает) Если таблица отсутствует или количество записей равно нулю в таблице, то скрипт не исполняется.
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 18 октября 2011 г. 15:56, спустя 2 минуты 46 секунд

    выполняй запрос на создание всегда да и все.

    условный конечно :-)

    аля

    CREATE TABLE IF NOT EXISTS t1 (c1 CHAR(10)) SELECT 1, 2;
    Сапожник без сапог
  • Tekuto

    Сообщения: 1147 Репутация: N Группа: Адекваты

    Spritz 18 октября 2011 г. 15:59, спустя 3 минуты 1 секунду

    Дело в том, что мне не нужно создавать таблицу. Она должна быть уже создана. Если ее нет, то скрипт должен прекратить работу. Если она есть, то вводим данные.
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 18 октября 2011 г. 16:04, спустя 4 минуты 47 секунд

    ну блин сделай
    SHOW TABLES LIKE 'tablename'


    и в результатах проверь на точное совпадение искомой
    Сапожник без сапог
  • Tekuto

    Сообщения: 1147 Репутация: N Группа: Адекваты

    Spritz 18 октября 2011 г. 16:05, спустя 1 минуту 29 секунд

    Хорошо. Спасибо большое.
  • Nyaah

    Сообщения: 574 Репутация: N Группа: Джедаи

    Spritz 18 октября 2011 г. 16:08, спустя 3 минуты 27 секунд

    Если только mysql, то можно так проверить:
    use database_name;
    show tables where `Tables_in_database_name`='table_name';
    Если результат пустой, то нету, если не пустой, то таблица существует.
    Work, buy, consume, die
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 18 октября 2011 г. 16:16, спустя 7 минут 7 секунд

    Nyaah, ога. тоже самое что и лайк по сути)
    Сапожник без сапог
  • Tekuto

    Сообщения: 1147 Репутация: N Группа: Адекваты

    Spritz 18 октября 2011 г. 16:26, спустя 10 минут 8 секунд

    Nyaah, тоже спасибо. Уже последовал совету phpdude. Вроде работает, спасибо.



    $myrows = count($wpdb->query("SHOW TABLES LIKE 'wp_wpsc_region_tax' "));
    if ( $myrows == 1 ) {

    } else {

    }



    Вот, что изобразил. Что скажете? Пойдет?
  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz 18 октября 2011 г. 16:37, спустя 10 минут 58 секунд

    Число таблиц не должно зависеть от программы. Ты установщик что ли создаешь? Если да, то как сказал phpdude, если нет - меняй подход, потому что он неправильный
  • Tekuto

    Сообщения: 1147 Репутация: N Группа: Адекваты

    Spritz 18 октября 2011 г. 16:51, спустя 14 минут 37 секунд

    Пишу плагин для wordpress, который добавляет данные в таблицу, которую в свою очередь добавляет другой плагин (wp e-commerce).
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 18 октября 2011 г. 18:06, спустя 1 час 15 минут 8 секунд

    select * from `table` limit 1

    проверить на ошибку. годится для любой SQL-бд
    не всё полезно, что в swap полезло

Пожалуйста, авторизуйтесь, чтобы написать комментарий!