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): stringParámetro
$mysqli(obligatorio) — Un object de conexión MySQLi devuelto pormysqli_connect()(omysqli_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$mysqlique 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, devuelvefalse(o lanza una excepción en modo estricto). Usemysqli_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
mysqli_query()— ejecuta una consulta cuyo fallo se inspeccionará.mysqli_connect_error()— mensaje de error de un intento de conexión fallido.mysqli_connect_errno()— código de error numérico para una conexión fallida.- Resumen de PHP MySQLi — la extensión MySQLi completa.
try/catchy excepciones — manejo de errores basado en excepciones.