在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错误,如查询无效?
答案 0 :(得分:7)
你需要告诉PDO抛出异常。您可以通过在连接到数据库后添加以下行来执行此操作:
$db = new PDO("sqlite:C:\Program Files\Spiceworks\db\spiceworks_prod.db");
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
这样你就可以捕获所有异常,除了第一行可能存在的问题,即数据库连接本身。