Zend MySQL 检查 table 是否存在

Zend MySQL Check if a table exist

我想知道是否有一种方法可以使用 Zend 测试 table 是否存在。
我是 Zend 的新手,我在 Whosebug 中看到了这个代码的答案。

SELECT 1 FROM testtable LIMIT 1;

但是如果 table 不存在它 return 一个错误 我不知道如何处理 Zend 中的 SQL 错误。

如果 table 可能根本不存在,那么您当前的查询将在执行时失败。即使 table 不存在也不会崩溃的一种替代方法是查询信息模式 table:

SELECT
    COUNT(CASE WHEN table_schema = 'yourdb' AND table_name = 'testtable'
               THEN 1 ELSE 0 END) AS cnt
FROM information_schema.tables;

上述查询总是 return 包含匹配 table 计数的单个记录。如果上面的查询returns的cnt值为1,那么table存在,如果returns为0,那么table不存在。

编辑:

如果数据库 and/or table 名称是动态的,来自您的 PHP 脚本,那么您可以使用准备好的语句并为 database/table 绑定值动态地。查询变化不大:

SELECT
    COUNT(CASE WHEN table_schema = ? AND table_name = ? THEN 1 ELSE 0 END) AS cnt
FROM information_schema.tables;

有关详细信息,请参阅 PHP documentation on prepared statements