W3docs

error_list

Aprende a usar mysqli_error_list() en PHP para obtener un array de errores de la última llamada a MySQLi, con número de error, SQLSTATE y mensaje.

La función mysqli_error_list() devuelve un array de los errores generados por la llamada más reciente a una función MySQLi en una conexión dada. A diferencia de mysqli_error(), que solo devuelve el último mensaje de error como string, mysqli_error_list() devuelve todos los errores de esa operación — cada uno como un array asociativo que contiene el número de error, el código SQLSTATE y el mensaje legible. Esta página explica la sintaxis, la estructura de los datos devueltos y cómo utilizarla en la práctica.

Sintaxis

mysqli_error_list(mysqli $mysql): array

El estilo orientado a objetos utiliza la propiedad de solo lectura error_list en su lugar:

$mysqli->error_list;

Parámetros

  • $mysql — Un objeto de conexión MySQLi devuelto por mysqli_connect() (o mysqli_init() / new mysqli()).

Valor de retorno

Un array de arrays asociativos. El array está vacío cuando no se produjo ningún error. Cada entrada tiene tres claves:

ClaveTipoDescripción
errnointEl número de error de MySQL (p. ej., 1146 para "la tabla no existe").
sqlstatestringEl código de error SQLSTATE de cinco caracteres (p. ej., 42S02).
errorstringEl texto del mensaje de error.

Ejemplo básico

Se llama a mysqli_error_list() inmediatamente después de la operación que se desea inspeccionar — normalmente cuando una consulta acaba de fallar:

<?php
$mysqli = mysqli_connect("localhost", "username", "password", "database");

$query = "SELECT * FROM my_table";
$result = mysqli_query($mysqli, $query);

if (!$result) {
    $error_list = mysqli_error_list($mysqli);
    foreach ($error_list as $error) {
        echo "Failed to execute query. Error message: " . $error['error'] . "\n";
    }
    exit();
}

mysqli_close($mysqli);
?>

Aquí nos conectamos, ejecutamos una consulta y comprobamos el resultado. Si mysqli_query() devuelve false, llamamos a mysqli_error_list() y recorremos el array devuelto, imprimiendo el mensaje error de cada error antes de salir. Cuando la consulta tiene éxito, el bucle simplemente no se ejecuta porque el array está vacío.

Lectura del código de error y el SQLSTATE

Como cada entrada es un array asociativo, puedes leer el código numérico y el SQLSTATE junto con el mensaje — útil para ramificar según fallos específicos en lugar de analizar el texto del mensaje:

<?php
$mysqli = mysqli_connect("localhost", "username", "password", "database");

$query = "SELECT * FROM my_table";
$result = mysqli_query($mysqli, $query);

if (!$result) {
    $error_list = mysqli_error_list($mysqli);
    foreach ($error_list as $error) {
        echo "Failed to execute query. Error message: " . $error['error'] . "\n";
        echo "Error code: " . $error['errno'] . "\n";
        echo "SQLSTATE error code: " . $error['sqlstate'] . "\n";
    }
    exit();
}

mysqli_close($mysqli);
?>

Esto extiende el ejemplo básico imprimiendo el errno numérico y el código sqlstate para cada error, proporcionando el contexto de diagnóstico completo.

Estilo orientado a objetos

Si creas la conexión con new mysqli(), utiliza la propiedad error_list:

<?php
$mysqli = new mysqli("localhost", "username", "password", "database");

if (!$mysqli->query("SELECT * FROM missing_table")) {
    foreach ($mysqli->error_list as $error) {
        echo "[{$error['errno']}] {$error['sqlstate']}: {$error['error']}\n";
    }
}

$mysqli->close();
?>

mysqli_error_list() vs. funciones relacionadas

  • mysqli_error() — devuelve solo el último mensaje de error como string. Úsala cuando solo necesitas un único mensaje.
  • mysqli_errno() — devuelve el número de error de la última llamada.
  • mysqli_error_list() — devuelve todos los errores de la última llamada, cada uno con errno, sqlstate y error. Úsala cuando una sola operación puede generar múltiples problemas.

Consideraciones importantes

  • La lista refleja solo la llamada MySQLi más reciente en esa conexión. Captúrala inmediatamente después de la operación fallida — una llamada exitosa posterior la borrará.
  • Una operación exitosa devuelve un array vacío, no false ni null, así que protege con if (!$result) (o comprueba mysqli_errno()) antes de asumir que hay errores que leer.
  • Para fallos de conexión, el propio paso de conexión falla antes de que tengas un objeto utilizable — usa mysqli_connect_error() en ese caso.

Conclusión

mysqli_error_list() te ofrece acceso estructurado a todos los errores de la última operación MySQLi, con número de error, SQLSTATE y mensaje. Recurre a ella cuando necesites diagnósticos más completos de los que proporciona mysqli_error(). Para el manejo de errores en PHP de forma más amplia, consulta manejo de errores en PHP y la visión general de mysqli.

Práctica

Práctica
¿Cuál de los siguientes representa tipos de Error en PHP?
¿Cuál de los siguientes representa tipos de Error en PHP?
Was this page helpful?