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。
我想知道是否有一种方法可以使用 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。