ADOdb检查表是否存在PHP

时间:2014-11-04 20:38:32

标签: php sql adodb

如何检查PHP ADOdb中的表是否存在于独立/未知的DB系统?

有一些解决方案,特定于某些DB系统,但我需要一个解决PHP ADOdb的解决方案。

通过使用ADOdb,我不能依赖于INFORMATION.SCHEMA等,如:

SELECT * 
FROM information_schema.tables
WHERE table_schema = 'db' 
 AND table_name = 'tablename'
LIMIT 1;

因为它们都是特定于数据库的,导致错误的查询也不适用,例如:

SELECT 1 FROM 'testtable' LIMIT 1;

因为这会导致(至少在我的情况下)出现无提示错误,但我无法预测其他数据库系统上的行为。

1 个答案:

答案 0 :(得分:0)

我花了几个小时找到一个有效的解决方案。这里$oADOdbCon是一个初始化的“准备使用”连接到某个数据库。

$rs = $oADOdbCon->execute("SHOW TABLES LIKE 'tablename';");

if ($rs->RecordCount() == 1) {
   // do something
}

在某些情况下,一次性检查一组表的可用性,或者可能是稍微扩展的SHOW TABLES功能检查会很方便,这里通配符操作符%很方便,所以同样如此上面的查询可以改为:

$rs = $oADOdbCon->execute("SHOW TABLES LIKE '%tablename%';");

在这种情况下,不仅找到了表'tablename',还找到了它的所有名称兄弟,如'a_tablename'或'some_tablename_s'。因此,检查考虑了多种结果的可能性:

if ($rs->RecordCount() >= 1) {
   // do something
}

显示找到的表格:

while (!$rs->EOF) {
     print $rs->fields[0] . '<BR>';
     $rs->MoveNext();
}