PHP 8.5.0 Alpha 1 available for testing

PDOStatement::errorInfo

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

PDOStatement::errorInfo Recupera las informaciones sobre el error asociado durante la última operación sobre la consulta

Descripción

public PDOStatement::errorInfo(): array

Parámetros

Esta función no tiene parámetros.

Valores devueltos

PDOStatement::errorInfo() devuelve un array que contiene informaciones sobre el error ocurrido durante la última operación ejecutada por este gestor de consultas. El array contiene los siguientes campos:

Elemento Información
0 Código de error SQLSTATE (un identificador de cinco caracteres alfanuméricos definido en el estándar ANSI SQL)
1 Código de error específico del driver.
2 Mensaje de error específico del driver.

Ejemplos

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

<?php
/* Provoca un error -- la tabla BONES no existe */
$sth = $dbh->prepare('SELECT skull FROM bones');
$sth->execute();

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

El resultado del ejemplo sería:

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

Ver también

  • PDO::errorCode() - Devuelve el SQLSTATE asociado con la última operación sobre la base de datos
  • PDO::errorInfo() - Devuelve las informaciones asociadas al error durante la última operación sobre la base de datos
  • PDOStatement::errorCode() - Recupera las informaciones sobre el error asociado durante la última operación sobre la consulta

add a note

User Contributed Notes 3 notes

up
16
Geoffrey Hoffman
9 years ago
If your query is successful, PDO::errorInfo() still returns an array. For MySQL 5.x, I get the following...

Array
(
[0] => 00000
[1] =>
[2] =>
)
up
9
richardverason at gmail dot com
6 years ago
Seriously errorInfo is your friend. Use it.

If these look like your google searches then you need errorInfo

"no database error showing in php"
"pdo selects from database but wont insert"
"pdo insert not working"
"isnt pdo just a big hype, should I go back to mysql?"
"how much do surgeons make?"

Trust me it will definitely save you hours of insanity if you make it a habit to use it in development. Forget E-ALL, it failed me since well, E-ALL apparently doesn't know that I didn't set a default value in my MySQL table and my query wasnt adding anything to it. So always do this

<?php

$sql
= 'do something on a mysql table where foo = :bar';
$stmt = prepare($sql);
$stmt->bindValue(':bar', $foo, PDO::PARAM_[DATA TYPE]);
$stmt->execute();

// very important during development. But take it off in production
$foo_arr = $stmt->errorInfo();
print_r($foo_arr);

//Sample print_r return
/*
Array(
[0] => HY000
[1] => 1364
[2] => Field 'phone' doesn't have a default value
)
Never have I been so happy to see an error
*/
?>

While its common practice for any decent developer to always watch out and try to catch for errors, even the best of us make mistakes. This is not a replacement for exceptions, but the simplicity is priceless.
To Top