Zend MySQL Проверьте, существует ли таблица - PullRequest
1 голос
/ 02 июля 2019

Я хочу знать, есть ли способ проверить, существует ли таблица с использованием Zend.
Я новичок в Zend, я вижу в StackOverflow ответ на этот код.

SELECT 1 FROM testtable LIMIT 1;

Но если таблица не существует, она возвращает ошибку. Я не знаю, как обрабатывать ошибки SQL в Zend.

1 Ответ

2 голосов
/ 02 июля 2019

Если таблица может вообще не существовать, то ваш текущий запрос потерпит неудачу, если будет выполнен. Один из вариантов, который не даст сбой, даже если таблица не существует, - это запрос таблицы информационной схемы:

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 по подготовленным операторам .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...