JBu*_*ace 2 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();
}
Run Code Online (Sandbox Code Playgroud)
但是这不会打印出来自SQL的任何数据.我知道数据库中有数据,连接有效.如果我更改查询说:
$query = "SELECT BLAHid FROM FakeDevices LIMIT 5";
Run Code Online (Sandbox Code Playgroud)
没有什么变化.SQL中没有任何内容再次打印出来,即使这显然是一个无效的SQL查询,我也看不到任何错误.
在这两种情况下,"完成"和"结果"打印出来都没问题.如何打印出SQL错误,比如查询无效?
您需要告诉PDO抛出异常.您可以通过在连接到数据库后添加以下行来执行此操作:
$db = new PDO("sqlite:C:\Program Files\Spiceworks\db\spiceworks_prod.db");
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Run Code Online (Sandbox Code Playgroud)
这样你就可以捕获所有异常,除了第一行可能存在的问题,即数据库连接本身.