我在使用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显示或捕获这种类型的数据库错误?