[英]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.