2

在 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 错误,例如查询无效?

4

1 回答 1

7

您需要告诉 PDO 抛出异常。您可以通过在连接到数据库后添加以下行来做到这一点:

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

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

于 2012-05-09T14:17:27.480 回答