4

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

4

1 回答 1

11

PDO::errorInfo()或者PDOStatement->errorInfo()

至于异常,请查看文档以了解PDO中的“错误和错误处理”。默认情况下不会抛出异常,这就是您可能想要启用它们的原因。

另见:

于 2009-03-27T18:00:54.783 回答