Ansi sql state Error codes can be found here:
https://docs.oracle.com/cd/F49540_01/DOC/server.815/a58231/appd.htm
(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.1.0)
PDOStatement::errorInfo — 获取跟上一次语句句柄操作相关的扩展错误信息
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 )
Ansi sql state Error codes can be found here:
https://docs.oracle.com/cd/F49540_01/DOC/server.815/a58231/appd.htm
If your query is successful, PDO::errorInfo() still returns an array. For MySQL 5.x, I get the following...
Array
(
[0] => 00000
[1] =>
[2] =>
)
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]);
?>