Каков наилучший способ проверить, существует ли таблица в MySQL (предпочтительно через PDO в PHP), не вызывая исключения. Мне не хочется разбирать результаты "ПОКАЗАТЬ ТАБЛИЦЫ КАК" и так далее. Должен быть какой-то логический запрос?
123
mysql_*
функций, они официально осуждается , больше не поддерживается и будет удален в будущем. Вы должны обновить свой код с помощью PDO или MySQLi, чтобы обеспечить функциональность вашего проекта в будущем.Если вы используете MySQL 5.0 и новее, вы можете попробовать:
Любые результаты указывают на то, что таблица существует.
С: http://www.electrictoolbox.com/check-if-mysql-table-exists/
источник
Используя mysqli, я создал следующую функцию. Предположим, у вас есть экземпляр mysqli с именем $ con.
Надеюсь, поможет.
Предупреждение: как предположил @jcaron, эта функция может быть уязвима для sqlinjection attacs, поэтому убедитесь, что ваш
$table
var чистый, или даже лучше используйте параметризованные запросы.источник
Это просто публикуется, если кто-то ищет этот вопрос. Хотя на него немного ответили. Некоторые ответы делают его более сложным, чем хотелось бы.
Для mysql * я использовал:
В PDO я использовал:
Здесь я просто вставляю условие else в или. А для моих нужд мне просто нужно умереть. Хотя можно установить или на другие вещи. Некоторые могут предпочесть if / else if / else. Который затем удалить или, а затем поставить if / else if / else.
источник
Вот мое решение, которое я предпочитаю при использовании хранимых процедур. Пользовательская функция mysql для проверки наличия таблицы в текущей базе данных.
источник
Поскольку "Показать таблицы" может работать медленно в больших базах данных, я рекомендую использовать "DESCRIBE" и проверить, получаете ли вы в результате true / false.
источник
источник
Zend framework
источник
Если причиной этого является условное создание таблицы, то «CREATE TABLE IF NOT EXISTS» кажется идеальным вариантом для этой работы. Пока я этого не обнаружил, я использовал метод DESCRIBE, описанный выше. Подробнее здесь: MySQL «СОЗДАТЬ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ» -> Ошибка 1050
источник
Почему вам так сложно понять?
источник