使用PHP获取MySQL错误代码

时间:2013-04-12 00:59:34

标签: php mysql pdo

我正在使用PHP和PDO连接到我的MySQL数据库。我配置了PDO连接,以便我将任何MySQL错误作为异常抛出:

$dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

现在让我假设我执行一个生成错误的MySQL命令,我抓住它,错误信息是这样的:

  

SQLSTATE [23000]:完整性约束违规:1048列“名称”不能为空

当我使用$exception->getCode()时,它返回23000,我认为它来自PHP或其他东西。如何在catch块中获取特定的MySQL错误(1048)?

2 个答案:

答案 0 :(得分:6)

PDOException对象的属性errorInfo是一个三元素数组,PDO::errorInfo()返回的属性相同。 MySQL错误代码是元素1。

try {
    . . .
} catch (PDOException $e)
    $errorInfo = $e->errorInfo;
    error_log "MySQL error " . $errorInfo[1] . "\n";
}

PS:请注意,只是回显错误不是正确的异常处理,我只是这样做以显示如何访问信息。

答案 1 :(得分:3)

由于您正在使用PDO,因此可以参考here,它提供了一个很好的描述以及如何从SQL获取错误信息的示例。