W3docs

error

En este artículo nos centramos en la función mysqli_error() de PHP, usada para obtener el mensaje de error de la operación MySQLi más reciente.

En este artículo nos centraremos en la función mysqli_error() de PHP, que se utiliza para recuperar el mensaje de error de la última llamada a una función MySQLi. Esta página cubre la sintaxis de la función, sus parámetros y valor de retorno, muestra ejemplos prácticos y señala funciones relacionadas con el manejo de errores.

Introducción a la función mysqli_error()

La función mysqli_error() es una función integrada de PHP que devuelve una string que describe el error de la operación MySQLi más reciente realizada en una conexión determinada. Si la última llamada fue exitosa — o aún no se ha ejecutado ninguna operación — devuelve una string vacía ("").

Es necesaria porque la mayoría de las funciones MySQLi (como mysqli_query()) solo señalan un fallo devolviendo false. Eso indica que algo salió mal, pero no qué. mysqli_error() cubre esa brecha proporcionando el mensaje legible reportado por el servidor MySQL, por ejemplo Table 'database.my_table' doesn't exist.

Sintaxis

mysqli_error(mysqli $mysqli): string

Parámetro

  • $mysqli (obligatorio) — Un object de conexión MySQLi devuelto por mysqli_connect() (o mysqli_init() + mysqli_real_connect()). El error reportado pertenece a esta conexión específica.

Valor de retorno

Una string con la descripción del error de la última operación en $mysqli. Una string vacía significa que no hubo error. Dado que una string vacía es "falsy" en PHP, normalmente se ramifica en el resultado de la llamada fallida (como !$result) en lugar de en mysqli_error() en sí misma.

Estilo orientado a objetos vs. procedimental. Esta página utiliza el estilo procedimental, mysqli_error($mysqli). Con la API orientada a objetos, el equivalente es la propiedad de solo lectura $mysqli->error.

Cómo usar la función mysqli_error()

Usar la función mysqli_error() es sencillo. Se llama sobre un object de conexión MySQLi válido. A continuación, un ejemplo:

¿Cómo usar la función mysqli_error()?

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

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

if (!$result) {
    $error_msg = mysqli_error($mysqli);
    echo "Failed to execute query. Error message: " . $error_msg;
    exit();
}

mysqli_close($mysqli);
?>

En este ejemplo, llamamos a la función mysqli_connect() para conectarnos a una base de datos MySQL. A continuación, ejecutamos una consulta con la función mysqli_query() y almacenamos el resultado en una variable. Verificamos si hubo un error en la consulta usando la condición !$result. Si hubo un error, pasamos el object de conexión a mysqli_error() para recuperar el mensaje de error específico, mostrarlo y terminar el script.

Nota: Siempre verifique que mysqli_connect() devuelva un object válido antes de ejecutar consultas. Si la conexión falla, mysqli_query() generará una advertencia de PHP.

Uso avanzado

La función mysqli_error() también puede utilizarse con múltiples conexiones. A continuación, un ejemplo:

Uso avanzado de PHP mysqli_error()

<?php
$mysqli1 = mysqli_connect("localhost", "username", "password", "database1");
$mysqli2 = mysqli_connect("localhost", "username", "password", "database2");

$query = "SELECT * FROM my_table";
$result1 = mysqli_query($mysqli1, $query);
$result2 = mysqli_query($mysqli2, $query);

if (!$result1) {
    $error_msg = mysqli_error($mysqli1);
    echo "Failed to execute query on connection 1. Error message: " . $error_msg;
    exit();
}

if (!$result2) {
    $error_msg = mysqli_error($mysqli2);
    echo "Failed to execute query on connection 2. Error message: " . $error_msg;
    exit();
}

mysqli_close($mysqli1);
mysqli_close($mysqli2);
?>

En este ejemplo, establecemos dos conexiones separadas y ejecutamos la misma consulta en cada una. Verificamos el resultado de cada conexión de forma independiente. Si una consulta falla, pasamos el object de conexión correspondiente a mysqli_error() para aislar y mostrar el error específico. Esto es importante porque mysqli_error() tiene alcance de conexión — llamarla sobre $mysqli1 nunca reportará un error ocurrido en $mysqli2.

Manejo moderno de errores con excepciones

Para aplicaciones PHP más recientes, considere habilitar el manejo de errores basado en excepciones en lugar de verificar mysqli_error() después de cada llamada. Agregue esta línea antes de conectarse:

<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

try {
    $mysqli = mysqli_connect("localhost", "username", "password", "database");
    $result = mysqli_query($mysqli, "SELECT * FROM my_table");
} catch (mysqli_sql_exception $e) {
    echo "Database error: " . $e->getMessage();
}
?>

Con MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT configurado, una conexión o consulta fallida lanza automáticamente un object mysqli_sql_exception en lugar de devolver false. El mismo mensaje que habría leído desde mysqli_error() está disponible a través de $e->getMessage(). A partir de PHP 8.1, este modo de reporte es el predeterminado, por lo que la mayoría del código moderno se basa en try/catch en lugar de verificaciones manuales.

Errores comunes

  • Pasar la conexión incorrecta. mysqli_error() reporta errores para la conexión que se le pasa. Pase el mismo $mysqli que utilizó para la consulta fallida.
  • Llamarla después de mysqli_close(). Una vez cerrada la conexión, el object ya no es válido y no puede leer su error.
  • Fallos de conexión. Si mysqli_connect() en sí misma falla, devuelve false (o lanza una excepción en modo estricto). Use mysqli_connect_error() para errores en el momento de la conexión — mysqli_error() es para errores después de una conexión exitosa.

Conclusión

En conclusión, la función mysqli_error() es una herramienta práctica para depurar y gestionar errores de MySQLi. Al verificar la validez de la conexión y comprender cómo recuperar mensajes de error específicos, puede construir interacciones con bases de datos más resilientes.

Funciones relacionadas

Práctica

Práctica
¿Cuáles son algunas formas de manejar errores en PHP?
¿Cuáles son algunas formas de manejar errores en PHP?
Was this page helpful?