如何在SQLite中显示SQL错误?

时间:2012-05-09 14:12:33

标签: php sqlite iis pdo

在PHP中使用SQLite(因此使用PDO),我有这样的代码:

try {
$db = new PDO("sqlite:C:\Program Files\Spiceworks\db\spiceworks_prod.db");

echo "Done.<br /><b>";

$query = "SELECT id FROM Devices LIMIT 5";

echo "Results: ";

$result = $db->query($query);

while ($row = $result->fetchArray()) {
    print_r($row)."|";
}
}
catch(PDOException $e) {  
    echo $e->getMessage();  
}

但是这不会打印出来自SQL的任何数据。我知道数据库中有数据,连接有效。如果我将查询更改为:

$query = "SELECT BLAHid FROM FakeDevices LIMIT 5";

没有任何改变。 SQL的任何内容都不会再打印出来,即使这显然是一个无效的SQL查询,我也看不到任何错误。

在这两种情况下,“完成”和“结果”打印出来都没问题。如何打印出SQL错误,如查询无效?

1 个答案:

答案 0 :(得分:7)

你需要告诉PDO抛出异常。您可以通过在连接到数据库后添加以下行来执行此操作:

$db = new PDO("sqlite:C:\Program Files\Spiceworks\db\spiceworks_prod.db");
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

这样你就可以捕获所有异常,除了第一行可能存在的问题,即数据库连接本身。