Php SQLite。更好的方法是:检查表是否存在,然后创建(或不创建)或;如果不存在,则创建表";?

Php SQLite。更好的方法是:检查表是否存在,然后创建(或不创建)或;如果不存在,则创建表";?,php,sqlite,pdo,Php,Sqlite,Pdo,我已经实现了存储在SQLite数据库中的简单缓存。对于一个客户机,数据库中有一个表。如果这个表不存在,我想自动创建它。使用查询检查表是否存在,更好的解决方法是什么:从sqlite\u master中选择名称,其中type='table'和name='table\u name'或使用创建表(如果不存在表名(…)?每次需要缓存时,我都必须这样做,所以我想知道哪种方法更有效、更正确 我使用的是PDO,所以也许有更聪明的方法可以做到这一点 解决方案: 用于查找表是否不存在。我会选择创建表如果不存在,因为

我已经实现了存储在
SQLite
数据库中的简单缓存。对于一个客户机,数据库中有一个表。如果这个表不存在,我想自动创建它。使用查询检查表是否存在,更好的解决方法是什么:
从sqlite\u master中选择名称,其中type='table'和name='table\u name'或使用
创建表(如果不存在表名(…)
?每次需要缓存时,我都必须这样做,所以我想知道哪种方法更有效、更正确

我使用的是
PDO
,所以也许有更聪明的方法可以做到这一点

解决方案:
用于查找表是否不存在。

我会选择
创建表如果不存在
,因为如果有一天您需要它,它将与其他数据库兼容(特别是在sqlite的情况下,您不太可能切换,但仍然如此)

另外,如果您选中了
sqlite\u master
,但没有在那里找到您的表,则需要发送另一个查询来创建它。使用
create table
只发送一个查询,尽管其中定义了表结构,但如果表结构不难生成或是预定义的,则每次使用
create table
都可以提供查询


这还取决于您的表不存在的可能性有多大。如果这不太可能,而您只是希望您的应用程序安全且能够自我维护,那么您可以假设它们存在,并在假设它们存在的查询失败时处理异常以创建表。

我会选择
创建表(如果不存在)
,因为如果有一天您需要它,它将与其他数据库兼容(特别是在sqlite的情况下,不太可能切换,但仍然如此)

另外,如果您选中了
sqlite\u master
,但没有在那里找到您的表,则需要发送另一个查询来创建它。使用
create table
您只发送一个查询,尽管其中定义了表结构,但如果您的表结构不难生成或是预定义的,则每次提供它都不会有问题使用
创建表格


这还取决于您的表不存在的可能性有多大。如果不太可能,而您只是希望您的应用程序安全且自我维护,您可以假设它们存在,并在假设它们存在的查询失败时处理异常以创建表。

这可能发生,但我不知道何时、多久或是否发生。table structure很简单,只有3列(varchar、text、integer)。不幸的是,若表不存在,它会抛出一般错误,所以我不知道它是由语法还是缺少表引起的错误。您可以检查
PDO::errorCode()
对于
SQLSTATE
发生错误的代码-对于不存在的表,它是'42S02'。请看中给出的示例。如果您仍然希望每次都提前检查,出于上述原因,我会使用
创建表
选项。谢谢,我不知道。这可能是最好、最干净的解决方案。您欢迎。如果这回答了您的问题,请您将答案标记为“已接受”?这可能发生,但我不知道何时、多久发生,甚至是否发生。表结构很简单,只有3列(varchar、text、integer)。不幸的是,若表不存在,它会抛出一般错误,所以我不知道这是由语法还是缺少表引起的错误。您可以检查
PDO::errorCode()
对于
SQLSTATE
发生错误的代码-对于不存在的表,它是'42S02'。请看中给出的示例。如果您仍然希望每次都提前检查,出于上述原因,我会使用
创建表
选项。谢谢,我不知道。这可能是最好、最干净的解决方案。您e欢迎。如果这回答了您的问题,请将答案标记为“已接受”好吗?