2012-05-09 27 views
2

使用PHP(因此利用PDO)SQLite的,我有这样的代码:如何在SQLite中显示SQL错误?

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

检查您的PHP文件中的error_reporting。 –

回答

6

您需要告诉PDO抛出异常。你可以通过添加你连接到数据库后,下面一行:

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

这样,你可以捕获所有异常,除了用第一线,数据库连接本身可能出现的问题。