文字

PDO::errorInfo

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

PDO::errorInfo Fetch extended error information associated with the last operation on the database handle

说明

public array PDO::errorInfo ( void )

返回值

PDO::errorInfo() returns an array of error information about the last operation performed by this database handle. The array consists of the following fields:

Element Information
0 SQLSTATE error code (a five characters alphanumeric identifier defined in the ANSI SQL standard).
1 Driver-specific error code.
2 Driver-specific error message.

Note:

If the SQLSTATE error code is not set or there is no driver-specific error, the elements following element 0 will be set to NULL .

PDO::errorInfo() only retrieves error information for operations performed directly on the database handle. If you create a PDOStatement object through PDO::prepare() or PDO::query() and invoke an error on the statement handle, PDO::errorInfo() will not reflect the error from the statement handle. You must call PDOStatement::errorInfo() to return the error information for an operation performed on a particular statement handle.

范例

Example #1 Displaying errorInfo() fields for a PDO_ODBC connection to a DB2 database

<?php

$stmt  $dbh -> prepare ( 'bogus sql' );
if (!
$stmt ) {
    echo 
"\nPDO::errorInfo():\n" ;
    
print_r ( $dbh -> errorInfo ());
}
?>

以上例程会输出:

PDO::errorInfo():
Array
(
    [0] => HY000
    [1] => 1
    [2] => near "bogus": syntax error
)

参见

  • PDO::errorCode() - 获取跟数据库句柄上一次操作相关的 SQLSTATE
  • PDOStatement::errorCode() - 获取跟上一次语句句柄操作相关的 SQLSTATE
  • PDOStatement::errorInfo() - 获取跟上一次语句句柄操作相关的扩展错误信息

用户评论:

[#1] pere dot pasqual at gmail dot com [2015-06-11 15:13:44]

I don't know why mazen at mindcraftinc dot com is getting that amount of negative votes: in my case, I've constated that with odbc_driver and an Access database, this method is returning ONE extra field appart from what is stated in this manual.
More precisely, if using the PDO odbc_pdo driver with an Access database, in a fourth array element I'm getting the ODBC Status Return Code.

[#2] alagar86 at gmail dot com [2011-01-09 13:29:07]

Please note : that this example won't work if PDO::ATTR_EMULATE_PREPARES is true. 

You should set it to false

<?php
$dbh
->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);
$stmt $dbh->prepare('bogus sql');
if (!
$stmt) {
    echo 
"\nPDO::errorInfo():\n";
    
print_r($dbh->errorInfo());
}
?>

[#3] mazen at mindcraftinc dot com [2008-09-23 11:43:07]

Some PDO drivers return a larger array. For example, the SQL Server driver returns 5 values.

For example:
<?php
$numRows 
$db->exec("DELETE FROM [TableName] WHERE ID between 6 and 17");
print_r($db->errorInfo());
?>


Result:

Array
(
    [0] => 00000
    [1] => 0
    [2] => (null) [0] (severity 0) []
    [3] => 0
    [4] => 0
)

[#4] quickshiftin at gmail dot com [2007-06-02 20:29:56]

here are the error codes for sqlite, straight from their site:

The error codes for SQLite version 3 are unchanged from version 2. They are as follows: 
#define SQLITE_OK           0   
#define SQLITE_ERROR        1   
#define SQLITE_INTERNAL     2   
#define SQLITE_PERM         3   
#define SQLITE_ABORT        4   
#define SQLITE_BUSY         5   
#define SQLITE_LOCKED       6   
#define SQLITE_NOMEM        7   
#define SQLITE_READONLY     8   
#define SQLITE_INTERRUPT    9   
#define SQLITE_IOERR       10   
#define SQLITE_CORRUPT     11   
#define SQLITE_NOTFOUND    12   
#define SQLITE_FULL        13   
#define SQLITE_CANTOPEN    14   
#define SQLITE_PROTOCOL    15   
#define SQLITE_EMPTY       16   
#define SQLITE_SCHEMA      17   
#define SQLITE_TOOBIG      18   
#define SQLITE_CONSTRAINT  19   
#define SQLITE_MISMATCH    20   
#define SQLITE_MISUSE      21   
#define SQLITE_NOLFS       22   
#define SQLITE_AUTH        23   
#define SQLITE_ROW         100  
#define SQLITE_DONE        101  

[#5] quickshiftin at gmail dot com [2007-03-20 20:43:28]

here is a reference to the ansi error codes 
there are several others; 
a link to the official spec from ansi would be nice
(have to rebuild this link because its too long to post w/o breaking it up)

http://download-east.oracle.com/docs/
cd/B14117_01/appdev.101/a87540/ch2.htm

~quickshiftin`

上一篇: 下一篇: