Задача
Вы хотите знать, существует ли таблица.

Решение
Используйте предложение SHOW TABLES, чтобы посмотреть, присутствует ли таблица в списке.

Обсуждение
Вы можете использовать предложение SHOW TABLES для проверки существования определенной таблицы, добавив инструкцию LIKE с именем таблицы:

SHOW TABLES LIKE ‘имя_таблицы’;
SHOW TABLES FROM имя_БД LIKE ‘имя_таблицы’;

Если строка возвращается, таблица существует. Если нет, то не существует.

Рассмотрим функцию на Perl, осуществляющую проверку наличия таблицы:

sub table_exists
<
my ($dbh, $tbl_name) = @_;
my $db_clause = "";
($db_clause, $tbl_name) = (" FROM $1", $2) if $tbl_name =

s/([%_])/\$1/g; # экранировать любые специальные символы
return ($dbh->selectrow_array ("SHOW TABLES $db_clause LIKE ‘$tbl_name’"));
>

Функция проверяет аргумент имени таблицы на соответствие формату имя_БД.имя_таблицы. Если формат такой, то функция извлекает имя таблицы и добавляет в предложение инструкцию FROM. В противном случае производится проверка для текущей базы данных.

Обратите внимание на то, что функция возвращает «ложь», если таблица существует, но у вас нет прав на доступ к ней.

Есть и другие способы проверки существования таблицы. Любое из приведенных ниже предложений SELECT выполнится успешно, если таблица существует, и не выполнится, если она не существует:

SELECT * FROM имя_таблицы WHERE 1=0;
SELECT COUNT(*) FROM имя_таблицы;

Чтобы использовать такие предложения в программе, сначала настройте режим диагностирования ошибок вашего API так, чтобы он не прерывалвыполнение программы в случае обнаружения ошибки. Затем попробуйте выполнить предложение и посмотреть, выполнится ли оно.

dr_z10

Новичок

Проверка существования таблицы в базе MySql

Подскажите, пожалуйста, каким образом можно проверить существование таблицы (в процессе выполнения PHP кода)?
К сожалению, ни на форуме, ни в мануале не нашёл ответа на свой вопрос.

Блин, промахнулся. Модеры, перенесите в PHP & Mускуль, plz!

Добрый День, Задача такова проверить наличие таблицы в базе данных максимально простым методом и не в коем случае не загружая процесс! Я гуглил но на форумах кроме как

ничего посоветовать толком не могут либо совсем уж огроменные конструкции в 10 строк, не ужели нету в php простой команды типа

если нет такого варианта то я воспользуюсь вещами с формов, зарание спасибо!

6 ответов 6

Выборка из таблицы может приводить к ошибочному срабатыванию, если таблица пустая.

Мой выбор — SHOW TABLES при обязательном использовании подготовки (prepare) запросов во избежание sql-инъекций, если исходное имя таблицы хранится в переменной. Псевдокод, возможны опечатки — не протестировал, лишь пишу логику.

То, что обычно подобные запросы занимают много строк, на мой взгляд, связано как раз-таки с проблемами, вызванными возможными sql-инъекциями. Если Вы не знаете что это такое, просто набейте в Google.