PDOStatement::errorInfo

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.1.0)

PDOStatement::errorInfo 获取跟上一次语句句柄操作相关的扩展错误信息

说明

array PDOStatement::errorInfo ( void )

返回值

PDOStatement::errorInfo() 返回一个关于上一次语句句柄执行操作的错误信息的数组 。该数组包含下列字段:

Element Information
0 SQLSTATE 错误码(一个由5个字母或数字组成的在 ANSI SQL 标准中定义的标识符)。
1 具体驱动错误码。
2 具体驱动错误信息。

范例

Example #1 显示连接到DB2数据库的 PDO_ODBC 连接的 errorInfo() 的字段

<?php
/* 激发一个错误 --  BONES 数据表不存在 */
$sth $dbh->prepare('SELECT skull FROM bones');
$sth->execute();

echo 
"\nPDOStatement::errorInfo():\n";
$arr $sth->errorInfo();
print_r($arr);
?>

以上例程会输出:

PDOStatement::errorInfo():
Array
(
    [0] => 42S02
    [1] => -204
    [2] => [IBM][CLI Driver][DB2/LINUX] SQL0204N  "DANIELS.BONES" is an undefined name.  SQLSTATE=42704
)

参见

User Contributed Notes

lingtalfi at gmail dot com 18-Dec-2015 06:27
Ansi sql state Error codes can be found here:

https://docs.oracle.com/cd/F49540_01/DOC/server.815/a58231/appd.htm
Geoffrey Hoffman 23-Jul-2015 01:45
If your query is successful, PDO::errorInfo() still returns an array. For MySQL 5.x, I get the following...

Array
(
    [0] => 00000
    [1] =>
    [2] =>
)
Deuchnord 11-Jun-2015 05:48
Sorry, my example below is not correct, this is a correction:

<?php
$listOfUsers
= $db->query('SELECT name from uesrs');
$errorInfo = $listOfUsers->errorInfo();
if(
$errorInfo[0] != 0)
    die(
$errorInfo[2]);
?>