首页后端开发PHPphp pdo errorinfo

php pdo errorinfo

时间2023-11-18 17:53:02发布访客分类PHP浏览829
导读:PHP PDO ErrorInfo – 介绍和实例PHP PDO 提供了一个用于获取任何 PDO 操作错误信息的方法。它是PDO类的方法之一,并且可以应用于任何 PDO 预处理状态句柄。该方法会返回一个包含出错信息的数组,其中必含 3 个元...

PHP PDO ErrorInfo – 介绍和实例

PHP PDO 提供了一个用于获取任何 PDO 操作错误信息的方法。它是PDO类的方法之一,并且可以应用于任何 PDO 预处理状态句柄。该方法会返回一个包含出错信息的数组,其中必含 3 个元素,每个元素都带有相关信息。

下面是一段短小的 PDO 错误示例,其中我们尝试连接数据库时打印查询失败的相关信息:

try {
    $dbh = new PDO('mysql:host=localhost;
    dbname=test', $user, $pass);
}
 catch (PDOException $e) {
    print "Error!: " . $e->
    getMessage() . " br/>
    ";
    die();
}
    

在这里,如果我们使用了一个错误的用户名、密码或者用不可用的数据库,连接就会失败。这时候,错误提示会自己输出 pdo 错误信息。它的输出结果可以是类似于下面这样的提示:

Error!: SQLSTATE[HY000] [1045] Access denied for user 'username'@'localhost' (using password: YES)

除了上面这个例子中捕获的PDOException以外,无论何时使用PDO处理数据库操作时发生错误,都会返回一个错误码。您可以使用 PDO Errorinfo 来执行此操作,如下所示:

$stmt = $dbh->
    prepare("SELECT * FROM test WHERE id = ?");
    if ($stmt->
execute( array( $id ))) {
    while ( $row = $stmt->
fetch( PDO::FETCH_ASSOC ) ) {
    var_dump($row);
}
}
    $err = $stmt->
    errorInfo();
if ($err[0] !== PDO::ERR_NONE) {
    web_log('PDO Error: ' . $err[2] . '(', $err[0], ')');
}
    

在上述示例中,我们在查询执行后检查错误信息。如果$stmt-> execute返回一个操作失败代码,我们将从$stmt-> errorInfo()数组中获得错误信息,然后将它们以易于阅读的方式记录在日志中。

这个errorInfo()数组就是我们这里要介绍的 PDO 错误信息传回的具体解释信息。

errorInfo() 返回 PDOStatement 类的对象。您检索出其中所有错误的信息可以如下:

  • $errCode = $stmt-> errorInfo()[0];
  • $errMSG = $stmt-> errorInfo()[1];
  • $errInfo = $stmt-> errorInfo()[2]; //错误信息本身

每一个元素都是 PDOStatement 对象数组,它的意义如下:

  • 元素0 - SQLSTATE (错误代码) 错误状态码如 SQLSTATE[HY000],每个类型语句会有不同的状态码。
  • 元素1 - 错误代码信息,对于数据库厂商本身的错误信息(例如 MySQL 返回的错误代码)。
  • 元素2 - 错误信息本身。

错误信息数组可以非常有用和紧凑。你可以立即获得错误信息细节(尤其是在调试时)或在日常使用中查看确切的错误信息(log 文件、调试日志和资源)。

总之,您可以在 PHP PDO 中使用 errorInfo() 获取 PDO 数据库操作的错误信息。无论您需要在代码中以何种方式记录错误信息,PDO ErrorInfo 都是一个非常有用的工具。所以,明确 PDO 错误信息的数组的每个元素的意义,就可以开始记录和调试 PDO 错误。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: php pdo errorinfo
本文地址: https://pptw.com/jishu/544920.html
php mysql utf8 php pdf制作

游客 回复需填写必要信息