PDO::errorInfo

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

PDO::errorInfo Busca informação de erro estendida associada com a última operação no identificador do banco de dados

Descrição

public PDO::errorInfo(): array

Parâmetros

Esta função não possui parâmetros.

Valor Retornado

PDO::errorInfo() retorna um array de informações de erro sobre a última operação realizada por este identificador de banco de dados. O array consiste em pelo menos os campos a seguir:

Elemento Informação
0 Código de erro SQLSTATE (um identificador alfanumérico de cinco caracteres definido no padrão ANSI SQL).
1 Código de erro específico do driver.
2 Mensagem de erro específica do driver.

Nota:

Se o código de erro SQLSTATE não estiver definido ou se não houver erro específico do driver, os elementos após o elemento 0 serão definidos para null.

PDO::errorInfo() somente busca informação de erro para operações realizadas diretamente no identificador do banco de dados. Se for criado um objeto PDOStatement através de PDO::prepare() ou PDO::query() e for invocado um erro no identificador da instrução, PDO::errorInfo() não refletirá o erro do identificador da instrução. Deve-se chamar PDOStatement::errorInfo() para retornar a informação de erro para uma operação realizada em um identificador de instrução em particular.

Exemplos

Exemplo #1 Mostrando campos de errorInfo() para uma conexão PDO_ODBC a um banco de dados DB2

<?php
/* Provoca um erro -- sintaxe SQL incorreta */
$stmt = $dbh->prepare('bogus sql');
if (!
$stmt) {
echo
"\nPDO::errorInfo():\n";
print_r($dbh->errorInfo());
}
?>

O exemplo acima produzirá:

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

Veja Também

  • PDO::errorCode() - Busca o SQLSTATE associado com a última operação no identificador do banco de dados
  • PDOStatement::errorCode() - Busca o SQLSTATE associado com a última operação no objeto da instrução
  • PDOStatement::errorInfo() - Busca informação de erro estendida associada com a última operação no identificador da instrução

adicione uma nota

Notas Enviadas por Usuários (em inglês) 3 notes

up
39
alagar86 at gmail dot com
14 years ago
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());
}
?>
up
23
quickshiftin at gmail dot com
18 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 */
up
9
mazen at mindcraftinc dot com
16 years ago
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
)
To Top