使用PHP获取MySQL错误代码

use*_*450 2 php mysql pdo

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

$dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Run Code Online (Sandbox Code Playgroud)

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

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

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

Bil*_*win 6

PDOException对象有一个属性errorInfo,其是一个三元件阵列,同样通过返回PDO::errorInfo().MySQL错误代码是元素1.

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

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