如果没有在SQLite / PDO中创建,如何检查表是否存在?

时间:2017-04-13 19:01:50

标签: php database sqlite pdo

目前我不得不通过记录我的一个包含来手动完成,我已经尝试过一些东西,但它似乎从来没有正常工作并弄乱了我的页面?

include("dbconnection.php");
include("dbresults.php");
/*$sqltable = "CREATE TABLE Devices (id, dname, dmodel, ddesc, dcountry,dprivacy)";
if ($db->query($sqltable) == TRUE) { 
 echo "table created succesfully";
} else {
    echo "error creating table: . $e->getMessage()";
}
*/

如果我删除了我的表,我在include("dbconnection.php");运行后只得到一个空白,当我注释掉dbresults .php并取消注释表代码时它工作正常,直到创建表,刷新另一个白页直到我再次反驳注释掉的行(回到它们如何在上面)

dbconnection.php

try {

$db = new PDO("sqlite:".__DIR__."/database.db");
$db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
} catch  (exception $e) {
echo "unable to connect";
echo $e->getMessage();

 exit;
}

dbresults.php

$sth = $db->prepare("SELECT * FROM Devices");
$sth->execute();
while ($result = $sth->fetch(PDO::FETCH_ASSOC)) {
$dbarray[] = $result;
}

我已经尝试将创建表放在Dbconnection.php和Dbresults.php之间,甚至将它放在文件本身中。我尝试了很多东西,但似乎无论我做什么,它只是在dbconnection.php之后打破了页面。我可以让它识别表不存在,但一旦我去创建表我的页面中断。我敢肯定我在这里错过了一些非常愚蠢的东西,希望有人可以把我推向正确的方向我做错了什么

编辑:我意识到我上面的代码没有检查表是否存在或者是什么,我尝试了一些事情,但没有真正有效,所以我只是将它恢复到上面的内容。

1 个答案:

答案 0 :(得分:0)

您现在可能已经找到了答案,但是对于其他寻求解决方案的人,您只需更改即可

CREATE TABLE

CREATE TABLE IF NOT EXISTS

并且实际上不检查表是否首先存在。