Проверить существование таблицы mysql php
MySQL: как проверить существование таблицы
Vladimir Kochetkov
Нужно проверить существование таблицы в что-то типа такой структуре:
IF TABLE EXISTS tabl_name THEN…
END IF
Не могу найти в мануале как это решить…
Дополнено (1). to gmaneye
С чего же это неправильный тон программирования?
Или для вас правильный тон использовать Oracle для четырех типов запросов SELECT, INSERT, UPTADE и DELETE?
Короче написал что-то вроде такого:
SELECT COUNT(1) INTO tabl_found
FROM information_schema.tables
WHERE table_name = tabl_name
AND schema = DATABASE()
LIMIT 1;
IF tabl_found = 1 THEN…
END IF
Дополнено (2). короче все равно не работает чего-то
tabl_found принимает значение DEFAULT, а не 0 или 1
Дополнено (3). Исправил:
SELECT COUNT(1) INTO tabl_found
FROM information_schema.tables
WHERE table_name = tabl_name
AND table_schema = DATABASE();
Дополнено (4). WebMikE,
а причем тут php?
gmaneye
Вообще это неправильный тон программирования.
Для чего такое?
Lyoha_22
лучший ответ SELECT * FROM information_schema.tables WHERE table_name = ‘Имя таблицы’ LIMIT 1
dasm32
SELECT * FROM information_schema.tables WHERE table_name = ‘таблица’ LIMIT 1
Если есть доступ к information_schema
SHOW TABLES FROM база LIKE ‘таблица’ вот еще вариант
WebMikE
Вот есть такая функция:
http://nopaste.info/58474a7f3d.html
KOCT
$query = mysql_query(«SELECT * FROM ТАБАНЕЙМ
//а дальше
if($query) <
Как проверить, существует ли таблица MySQL с PHP?
Как просто в теории, как это звучит, я провел немало исследований, и мне трудно понять это.
Как проверить, существует ли таблица MySQL и что она делает что-то. (Думаю, для этого может работать простой оператор php if/else)
Есть ли способ сделать это?
Это то, что я сделал с ответом cwallenpoole:
По общему признанию, это больше Pythonic, чем PHP-идиома, но, с другой стороны, вам не нужно беспокоиться о большом количестве дополнительных данных.
Изменить
Итак, этот ответ был отмечен как минимум дважды с момента, когда я пишу это сообщение. Предполагая, что я совершил некоторую гигантскую ошибку, я пошел, и я провел некоторые тесты, и именно это я обнаружил, что мое решение на 10% быстрее чем ближайшая альтернатива, когда таблица не существует, и она на 25% быстрее, когда таблица существует:
Я попытался запустить это против DESC, но у меня был тайм-аут после 276 секунд (24 секунды для моего ответа, 276, чтобы не завершить описание не существующей таблицы).
Для хорошей оценки я сравниваю схему с четырьмя таблицами, и это почти новая установка MySQL (пока это единственная база данных). Чтобы увидеть экспорт, посмотрите здесь.
И ДАЛЕЕ
Это конкретное решение также более независимо от базы данных, поскольку тот же запрос будет работать в PgSQL и Oracle.
НАКОНЕЦ
mysql_query() возвращает FALSE для ошибок, которые не являются «эта таблица не существует».
Как проверить наличие записей в таблице MySQL через PHP?
Функция проверяет, есть ли уже в таблице ‘users’ запись о пользователе. Но функция дает ошибку: при вызове она всегда возвращает ‘true’, хотя никакой записи о пользователе в таблице еще нет. Из-за этого данные, переданные через форму, так и не попадают в базу данных. Может быть я неправильно проверяю результат выполнения запроса в функции?
P.S. Вот условие, в котором вызывается функция:
Это очень распространенная ошибка.
И очень нелогичная.
Ты, когда запрашиваешь выписку в банке чтобы узнать, есть ли у тебя деньги, на что смотришь? Просто на то пришла ли выписка, или нет? Серьёзно? Или все-таки смотришь в саму выписку, какие там цифры?
Чтобы узнать, еслть ли в таблице данные, нельзя запрашивать все строки. А представь что ты наконец освоишь программирование и на твоем сайте будет миллион пользователей. Будешь всех запрашивать в РНР чтобы узнать, есть ли хоть один?
Кроме того, забудь про global. Привыкай всегда понимать, откуда и куда у тебя идут переменные, чтобы четко знать какая переменная у тебя что содержит и откуда взялась. А не просто с неба свалилась. Пеередавай переменные в функцию только через параметры
Проверьте, существует ли таблица в SQL Server
Я хотел бы, чтобы это было окончательное обсуждение того, как проверить, существует ли таблица в SQL Server 2000/2005 с помощью инструкции SQL.
когда вы Google для ответа, вы получите столько разных ответов. Есть ли официальный / назад и вперед совместимый способ сделать это?
здесь два возможных способа сделать это. Какой из них является стандартным / лучшим способом сделать это?
в MySQL обеспечивает простой
заявление. Я ищу нечто подобное.
22 ответов
для таких запросов всегда лучше использовать INFORMATION_SCHEMA вид. Эти представления (в основном) стандартны для многих различных баз данных и редко меняются от версии к версии.
чтобы проверить, существует ли таблица, используйте:
также обратите внимание, что если по какой-либо причине вам нужно проверить временную таблицу, вы можете сделать это:
мы всегда использовать OBJECT_ID стиль, сколько я помню
пожалуйста, смотрите ниже подходы,
подход 1: Использование INFORMATION_SCHEMA.Вид таблиц
мы можем написать запрос, как показано ниже, чтобы проверить, существует ли таблица Customers в текущей базе данных.
подход 2: Использование функции OBJECT_ID ()
мы можем использовать функцию OBJECT_ID (), как показано ниже, чтобы проверить, существует ли таблица Customers в текущей базе данных.
Подход 3: Использование системный.Просмотр Каталога Объектов
мы можем использовать Sys.Посмотреть каталог объектов для проверки существования таблицы, как показано ниже:
подход 4: Использование sys.Вид Каталога Таблиц
мы можем использовать Sys.Представление каталога таблиц для проверки существования таблицы, как показано ниже:
подход 5: Избегайте использования sys.системной таблице sysobjects таблице
мы должны избегать использования sys.системной таблице sysobjects стол непосредственно прямой доступ к нему будет устаревшим в некоторых будущих версиях Sql Server. Согласно ссылке Microsoft BOL, Microsoft предлагает использовать представления каталога sys.объекты/системы.таблицы вместо sys.системная таблица sysobjects напрямую.
MySQL, проверьте, существует ли столбец в таблице с SQL
Я думал что-то вроде
будет работать, но это плохо удается. Есть ли способ?
10 ответов:
С PHP это было бы что-то вроде.
Спасибо за пример SQL. Я попробовал запрос, и я думаю, что он нуждается в небольшом изменении, чтобы заставить его работать должным образом.
это сработало для меня.
Ниже приведен другой способ сделать это с помощью простого PHP без базы данных information_schema:
выберите просто column_name из информационной схемы и поместите результат этого запроса в переменную. Затем проверьте переменную, чтобы решить, нуждается ли таблица в изменении или нет.
P. S. Не забудем указать TABLE_SCHEMA для столбцов таблицы, а также.
просто чтобы помочь всем, кто ищет конкретный пример того, что @Mchi описывал, попробуйте что-то вроде
SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = ‘my_table’ AND COLUMN_NAME = ‘my_column’
если он возвращает false (нулевые результаты), то вы знаете, что столбец не существует.
Я бросил эту хранимую процедуру вместе с началом от комментариев @lain выше, вроде приятно, если вам нужно вызвать его больше, чем несколько раз (и не нужно php):
работает с fieldExists
Я использую этот простой скрипт:
это работает, если вы уже подключены к базе данных.
большое спасибо Mfoo, который поставил действительно хороший скрипт для динамического добавления столбцов, если он не существует в таблице. я улучшил его ответ с PHP. Элемент скрипт дополнительно поможет вам найти, сколько таблиц на самом деле нужно «добавить столбец» mysql comand. Просто попробуйте рецепт. Работает как шарм.
эта работа для меня с образцом PDO: