首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ADOdb检查表是否存在

ADOdb检查表是否存在
EN

Stack Overflow用户
提问于 2014-11-05 04:38:32
回答 1查看 915关注 0票数 0

对于一个独立的/未知的数据库系统,如何在PHP ADOdb中检查表的存在?

周围有几个解决方案,具体到一些数据库系统,但我需要一个解决方案在PHP ADOdb工作。

通过使用ADOdb,我不能依赖于INFORMATION.SCHEMA之类的东西,比如:

代码语言:javascript
复制
SELECT * 
FROM information_schema.tables
WHERE table_schema = 'db' 
 AND table_name = 'tablename'
LIMIT 1;

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

代码语言:javascript
复制
SELECT 1 FROM 'testtable' LIMIT 1;

因为这将导致,至少在我的情况下,一个无声的错误,但我不能预测其他数据库系统上的行为。

EN

回答 1

Stack Overflow用户

发布于 2014-11-05 04:38:32

我花了几个小时才找到一个可行的解决方案。在这里,$oADOdbCon是一个初始化的到某个数据库的“可以使用”的连接。

代码语言:javascript
复制
$rs = $oADOdbCon->execute("SHOW TABLES LIKE 'tablename';");

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

在某些情况下,一次检查一组表的可用性会很方便,或者可能是某种程度上扩展的SHOW TABLES功能检查,这里的通配符运算符%很方便,因此上面的相同查询可以重新表述为:

代码语言:javascript
复制
$rs = $oADOdbCon->execute("SHOW TABLES LIKE '%tablename%';");

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

代码语言:javascript
复制
if ($rs->RecordCount() >= 1) {
   // do something
}

用于显示找到的表的ANd:

代码语言:javascript
复制
while (!$rs->EOF) {
     print $rs->fields[0] . '<BR>';
     $rs->MoveNext();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26744585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档