我在使用PDO时遇到问题,因为没有捕获错误。
代码很简单,工作正常,为了避免混淆,我只提供一个示例:
$sql = 'INSERT INTO somedatetable (something)
VALUES (:something)
ON DUPLICATE KEY UPDATE something=:something';
$values = array(":something" => $something);
try {
$stmt = $dbh->prepare($sql);
$stmt->execute($values);
} catch (PDOException $e) {
echo "Error: " . $e->getMessage() . "<br />\n";
}
代码运行良好,但是在处理新模块时,我遇到了一个问题,没有添加或修改任何记录,也没有发现任何错误。
$stmt
返回
false
但是我不知道为什么或者如何找到错误。
最终解决方案很简单,我使用的是一个有限的MySQL用户,该用户没有对表的写入权限。当使用mysql时,这些错误总是立即显示出来,但使用PDO时,我不知道如何找到它们。
如何让PHP/PDO显示或捕获此类数据库错误?