我遇到了使用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显示或捕获这些数据库错误?
答案 0 :(得分:8)
PDO::errorInfo()
或PDOStatement->errorInfo()
对于例外情况,请查看"Errors and error handling" in PDO的文档。默认情况下不会抛出异常,这就是您可能想要启用它们的原因。
参见: