繁体   English   中英

PHP SQLITE PDO检查视图OR表是否存在

[英]PHP SQLITE PDO Check if views OR table exist

显然,我有一个简单的问题。 作为文档,我可以检查数据库中是否存在表或视图。 在我的应用程序中,我需要检查db中是否都已存在返回自定义错误。 问题是我可以检查是否有一个表,但没有视图。 例如:

 **Working case**
 $checkTable = $this->db->query("SELECT * FROM sqlite_master WHERE name  ='$table' and type='table'", PDO::FETCH_ASSOC); 

 **Not working case**
 $checkTable = $this->db->query("SELECT * FROM sqlite_master WHERE name  ='$table' and type='table' OR type='views'", PDO::FETCH_ASSOC);

**Not working case**
 $checkTable = $this->db->query("SELECT * FROM sqlite_master WHERE name  ='$table' and type='views'", PDO::FETCH_ASSOC);

奇怪的是,如果我在视图上运行查询,则返回结果:

**Working case**
 $checkTable = $this->db->query("SELECT * FROM VIEWSpeople WHERE name   ='$person'", PDO::FETCH_ASSOC); 

在sqlite_master上的一般查询找到视图:

 **Working case**
 $checkTable = $this->db->query("SELECT * FROM sqlite_master WHERE name   ='$table'", PDO::FETCH_ASSOC); 

问题:为什么查询无法将视图识别为type ='views'? 谢谢你的时间。

视图的类型不是views而是view

此外,应使用括号确保表达式以正确的顺序求值:

... WHERE name ='$table' AND (type='table' OR type='view')

或者,使用IN:

... WHERE name ='$table' AND type IN ('table', 'view')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM