PHP 8.1.0 Alpha 1 available for testing


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

PDO::errorInfo Obtiene información extendida del error asociado con la última operación del manejador de la base de datos


public PDO::errorInfo ( ) : array

Valores devueltos

PDO::errorInfo() devuelve un array con la información del error sobre la última operación realizada por el manejador de la base de datos. El array contiene los siguientes campos:

Element Information
0 Código de error SQLSTATE (un identificador de cinco caracteres alfanuméricos definidos según el estándar ANSI SQL).
1 Código de error específico del driver.
2 Mensaje del error específico del driver.


Si el código de error SQLSTATE no está definido o no hay un error específico del driver, los elementos siguientes al 0 estarán establecidos como null.

PDO::errorInfo() sólo devuelve información de error para operaciones realizadas directamente sobre el manejador de la base de datos. Si se crea un objeto PDOStatement con PDO::prepare() o PDO::query() y se eleva un error sobre el manejador de la sentencia, PDO::errorInfo() no reflejará el error desde el manejador de la sentencia. Se deberá llamar a PDOStatement::errorInfo() para devolver la información del error para una operación realizada sobre un manejador de sentencia concreto.


Ejemplo #1 Muestra los campos de errorInfo() para una conexión PDO_ODBC a una base de datos DB2

/* Provoca un error -- sintaxis SQL falsa */
$stmt $dbh->prepare('bogus sql');
if (!
$stmt) {

El resultado del ejemplo sería:

    [0] => HY000
    [1] => 1
    [2] => near "bogus": syntax error

Ver también

  • PDO::errorCode() - Obtiene un SQLSTATE asociado con la última operación en el manejador de la base de datos
  • PDOStatement::errorCode() - Obtiene el SQLSTATE asociado con la última operación del gestor de sentencia
  • PDOStatement::errorInfo() - Obtiene información ampliada del error asociado con la última operación del gestor de sentencia

add a note add a note

User Contributed Notes 4 notes

alagar86 at gmail dot com
10 years ago
Please note : that this example won't work if PDO::ATTR_EMULATE_PREPARES is true.

You should set it to false

$stmt = $dbh->prepare('bogus sql');
if (!
$stmt) {
quickshiftin at gmail dot com
14 years ago
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   /* Successful result */
#define SQLITE_ERROR        1   /* SQL error or missing database */
#define SQLITE_INTERNAL     2   /* An internal logic error in SQLite */
#define SQLITE_PERM         3   /* Access permission denied */
#define SQLITE_ABORT        4   /* Callback routine requested an abort */
#define SQLITE_BUSY         5   /* The database file is locked */
#define SQLITE_LOCKED       6   /* A table in the database is locked */
#define SQLITE_NOMEM        7   /* A malloc() failed */
#define SQLITE_READONLY     8   /* Attempt to write a readonly database */
#define SQLITE_INTERRUPT    9   /* Operation terminated by sqlite_interrupt() */
#define SQLITE_IOERR       10   /* Some kind of disk I/O error occurred */
#define SQLITE_CORRUPT     11   /* The database disk image is malformed */
#define SQLITE_NOTFOUND    12   /* (Internal Only) Table or record not found */
#define SQLITE_FULL        13   /* Insertion failed because database is full */
#define SQLITE_CANTOPEN    14   /* Unable to open the database file */
#define SQLITE_PROTOCOL    15   /* Database lock protocol error */
#define SQLITE_EMPTY       16   /* (Internal Only) Database table is empty */
#define SQLITE_SCHEMA      17   /* The database schema changed */
#define SQLITE_TOOBIG      18   /* Too much data for one row of a table */
#define SQLITE_CONSTRAINT  19   /* Abort due to contraint violation */
#define SQLITE_MISMATCH    20   /* Data type mismatch */
#define SQLITE_MISUSE      21   /* Library used incorrectly */
#define SQLITE_NOLFS       22   /* Uses OS features not supported on host */
#define SQLITE_AUTH        23   /* Authorization denied */
#define SQLITE_ROW         100  /* sqlite_step() has another row ready */
#define SQLITE_DONE        101  /* sqlite_step() has finished executing */
mazen at mindcraftinc dot com
12 years ago
Some PDO drivers return a larger array. For example, the SQL Server driver returns 5 values.

For example:
= $db->exec("DELETE FROM [TableName] WHERE ID between 6 and 17");


    [0] => 00000
    [1] => 0
    [2] => (null) [0] (severity 0) []
    [3] => 0
    [4] => 0
pere dot pasqual at gmail dot com
6 years ago
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.
To Top