Если таблица может вообще не существовать, то ваш текущий запрос потерпит неудачу, если будет выполнен. Один из вариантов, который не даст сбой, даже если таблица не существует, - это запрос таблицы информационной схемы:
SELECT
COUNT(CASE WHEN table_schema = 'yourdb' AND table_name = 'testtable'
THEN 1 ELSE 0 END) AS cnt
FROM information_schema.tables;
Приведенный выше запрос всегда будет возвращать одну запись, содержащую количество совпадающих таблиц. Если приведенный выше запрос возвращает значение cnt
, равное 1, то таблица существует, а если возвращается 0, то таблица не существует.
Edit:
Если имена базы данных и / или таблицы будут динамическими, исходя из вашего PHP-скрипта, вы можете использовать подготовленный оператор и динамически связывать значения для базы данных / таблицы. Запрос сильно не меняется:
SELECT
COUNT(CASE WHEN table_schema = ? AND table_name = ? THEN 1 ELSE 0 END) AS cnt
FROM information_schema.tables;
Дополнительную информацию см. В документации PHP по подготовленным операторам .