【问题标题】:Get MySQL error code with PHP使用 PHP 获取 MySQL 错误代码
【发布时间】:2013-04-04 09:25:58
【问题描述】:

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

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

现在假设我执行了一个生成错误的 MySQL 命令并捕获它,错误消息是这样的:

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

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

【问题讨论】:

  • 如果你们对我的问题有任何疑问,请问。我不知道它是否真的可以做到。我必须用 SQL 编写错误处理代码吗?

标签: php mysql pdo


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    由于您使用的是 PDO,您可以参考here,它提供了关于如何从 SQL 获取错误信息的出色描述和示例。

    【讨论】:

      猜你喜欢
      • 2017-01-02
      • 1970-01-01
      • 1970-01-01
      • 2011-08-28
      • 1970-01-01
      • 2016-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多