【问题标题】:PHP SQLITE PDO Check if views OR table existPHP SQLITE PDO 检查视图或表是否存在
【发布时间】:2016-01-14 23:21:46
【问题描述】:

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

 **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'? 感谢您的宝贵时间。

【问题讨论】:

  • 会不会只是view 而不是views
  • 你好,RRAider,谢谢你,我也试过“VIEW”没什么好处

标签: php sqlite pdo


【解决方案1】:

视图的类型不是views,而是view

此外,您应该使用括号来确保以正确的顺序计算表达式:

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

或者,使用 IN:

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

【讨论】:

  • 您好 CL,感谢您的帮助。但是: $checkTable = $this->db->query("SELECT * FROM sqlite_master WHERE name ='$table' AND type IN ('table', 'view')", PDO::FETCH_ASSOC);没有结果。并且 $checkTable = $this->db->query("SELECT * FROM sqlite_master WHERE name ='$table' AND (type='table' OR type='view')", PDO::FETCH_ASSOC);没有结果。有什么想法吗?
猜你喜欢
  • 2012-08-12
  • 1970-01-01
  • 1970-01-01
  • 2010-12-15
  • 1970-01-01
  • 2017-09-10
  • 1970-01-01
  • 2017-02-16
  • 2021-10-06
相关资源
最近更新 更多