Mostrar errores usando las funciones de error de MySQLi

Mehvish Ashiq 30 enero 2023
  1. Funciones de error PHP MySQLi
  2. Conclusión
Mostrar errores usando las funciones de error de MySQLi

MySQLi es una función de PHP utilizada para acceder al servidor de base de datos MySQL. Puede usar esta extensión si tiene MySQL versión 4.1.13 o superior.

Hay varias funciones MySQLi que puede usar para realizar diferentes funciones en PHP. En este artículo, aprenderemos las funciones de error de MySQLi.

También veremos cómo y dónde usar ejemplos de código y observar los resultados. Para este tutorial, usaremos MySQL versión 8.0.27 y PHP versión 7.4.1.

Funciones de error PHP MySQLi

En este tutorial, aprenderemos sobre las siguientes funciones de error PHP MySQLi:

  • mysqli_error()
  • mysqli_errno()
  • mysqli_error_list()
  • mysqli_connect_error()
  • mysqli_connect_errno()

Todas estas funciones se pueden utilizar en estilo orientado a objetos y estilo procedimental. Entendamos ambas sintaxis usando la función mysqli_error().

Sintaxis de la función mysqli_error() en estilo orientado a objetos

string $mysqli->error;

Sintaxis de la función mysqli_error() en estilo procedimental

string mysqli_error ( mysqli $link )

Función mysqli_error() en MySQL

Esta función se utiliza para generar la última descripción de error de la llamada de función más reciente (si la hay). Se utiliza cuando se quiere saber si la consulta SQL tiene error o no.

mysqli_error() devuelve la descripción del error y una cadena vacía si no hay ningún error. Vea el siguiente ejemplo.

Código de ejemplo usando estilo procedimental:

<?php
    $host = "localhost";
    $username = "root";
    $password = "";
    $database = "person";

    $connection = mysqli_connect($host, $username, $password, $database) 
    or die("Connection Failed"); 

    $sql = "SELECT * FROM teacher";
    $result = mysqli_query($connection, $sql);
    $error_message = mysqli_error($connection);

    if($error_message == ""){
        echo "No error related to SQL query.";
    }else{
        echo "Query Failed: ".$error_message;
    }
    mysqli_close($connection);
?>

El código dado arriba intenta hacer la conexión usando las variables $host, $username, $password, $database y guarda esta conexión en la variable $connection.

La función mysqli_error() tomará esta variable de conexión $conexión como un parámetro y verificará si hay algún error causado por la reciente llamada a la función MySQLi que es mysqli_query($connection, $sql) aquí.

Producción:

mostrar errores usando funciones de error de mysqli - no hay error usando mysqli_error

Ahora, cambie el nombre de la tabla en la consulta SQL de teacher a person y observe el resultado que se muestra a continuación.

Producción:

mostrar errores usando funciones de error mysqli - error usando mysqli_error

Nosotros, como desarrolladores, podemos entender fácilmente que no hay una tabla de person en la base de datos person (esto es lo que significa en el error anterior).

Mantenga el nombre de la tabla cambiado y reemplace la línea $error_message = mysqli_error($connection); con $error_message = $connection->error; para practicar y comprender el estilo orientado a objetos utilizando la función de error MySQLi.

Función mysqli_errno() en MySQL

mysqli_errno() funciona igual que mysqli_error(), pero devolverá el código de error en lugar de la descripción del error.

Escribe el siguiente código para practicar y entender. Es posible que haya notado que usamos un estilo procedimental para practicar esta función.

<?php
     $host = "localhost";
     $username = "root";
     $password = "";
     $database = "person";

     $connection = mysqli_connect($host, $username, $password, $database) 
     or die("Connection Failed"); 

     $sql = "SELECT * FROM person";
     $result = mysqli_query($connection, $sql);
     $error_message = mysqli_errno($connection);

     if($error_message == ""){
     	echo "No error related to SQL query.";
     }else{
     	echo "Query Failed: ".$error_message;
     }
    mysqli_close($connection);
?>

El código dado arriba mostrará el siguiente resultado donde verá un número como código de error.

Producción:

mostrar errores usando funciones de error de msyqli - error usando mysqli_errno

La pregunta es, ¿por qué usamos esta función para mostrar solo los números? Porque si desea imprimir un mensaje de error fácil de usar (mensaje personalizado), puede usar este código de error en declaraciones if-else.

Vea el siguiente código y su salida a continuación.

<?php
     $host = "localhost";
     $username = "root";
     $password = "";
     $database = "person";

     $connection = mysqli_connect($host, $username, $password, $database) 
     or die("Connection Failed"); 

     $sql = "SELECT * FROM person";
     $result = mysqli_query($connection, $sql);
     $error_message = mysqli_errno($connection);

     if($error_message == 1146){
     	echo "You are trying to read the data from a table which doesn't exist in your 			database "."'".$database."'";
     }
    mysqli_close($connection);
?>

Producción:

mostrar errores usando las funciones de error de mysqli - mensaje de error personalizado usando mysqli_errno

Función mysqli_error_list() en MySQL

Esta función es muy útil para conocer el código de error, el estado de SQL y la descripción del error porque esta función devuelve un array que contiene toda la información necesaria.

Código de ejemplo:

<?php
     $host = "localhost";
     $username = "root";
     $password = "";
     $database = "person";

     $connection = mysqli_connect($host, $username, $password, $database) 
     or die("Connection Failed"); 

     $sql = "SELECT * FROM person";
     $result = mysqli_query($connection, $sql);
     print_r(mysqli_error_list($connection));
     mysqli_close($connection);
?>

Producción:

mostrar errores usando las funciones de error de mysqli - lista de errores usando mysqli_error_list

Función mysqli_connect_error() en MySQL

mysqli_connect_error() devuelve la descripción del error de la última conexión, si la hay. Aunque, la función die() también informa sobre la conexión fallida, pero mysqli_connect_error() devuelve el error que podemos entender fácilmente.

Escriba primero el siguiente código, vea su salida y luego lo compararemos con la salida producida por mysqli_connect_error().

<?php
     $host = "localhost";
     $username = "root";
     $password = "";
     $database = "person";

     $connection = mysqli_connect($host, $username, $password, $database) 
     or die("Connection Failed"); 

     $sql = "SELECT * FROM person";
     $result = mysqli_query($connection, $sql);
     $error_message = mysqli_error($connection);

     if($error_message != ""){
     	echo "Query Failed: ".$error_message;
      }
    mysqli_close($connection);
?>

Producción:

mostrar errores usando funciones de error mysqli - error usando mysqli_connect_error parte a

Vea la salida dada arriba; puede ver que el error que podemos entender está en algún lugar en el medio.

Imagínese, si tiene 2 o 3 errores, no sería fácil averiguarlo. Ahora, use mysqli_connect_error() y vea la diferencia usando el siguiente código y salida.

<?php
     $host = "localhost";
     $username = "newroot";
     $password = "";
     $database = "person";

     $connection = mysqli_connect($host, $username, $password, $database) 
     or die("Connection Failed: ".mysqli_connect_error()); 

     $sql = "SELECT * FROM teacher";
     $result = mysqli_query($connection, $sql);
     $error_message = mysqli_error($connection);

     if($error_message != ""){
     	echo "SQL Query Failed: ".$error_message;
    }
    mysqli_close($connection);
?>

Producción:

mostrar errores usando funciones de error mysqli - error usando mysqli_connect_error parte b

El resultado anterior dice claramente que no hay ningún usuario llamado newroot, que no le permita acceder a la base de datos.

Función mysqli_connect_errno() en MySQL

Esta función se comporta como mysqli_connect_error() pero muestra el código de error en lugar del mensaje de error. Podemos usar este código de error para escribir mensajes de error personalizados.

Código de ejemplo:

<?php
     $host = "localhost";
     $username = "newroot";
     $password = "";
     $database = "person";

     $connection = mysqli_connect($host, $username, $password, $database) 
     or die("Connection Failed: ".mysqli_connect_errno()); 

     $sql = "SELECT * FROM teacher";
     $result = mysqli_query($connection, $sql);
     $error_message = mysqli_error($connection);

     if($error_message != ""){
	     echo "SQL Query Failed: ".$error_message;
     }
     mysqli_close($connection);
?>

Producción:

mostrar errores usando funciones de error mysqli - error usando mysqli_connect_errno

Conclusión

Teniendo en cuenta toda la discusión y los ejemplos, hemos concluido dos categorías principales. La primera categoría muestra los errores sobre las consultas SQL y la otra sobre las conexiones a la base de datos.

Dependiendo de las necesidades del proyecto, podemos imprimir el mensaje de error o el código de error en cada categoría.

Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

Artículo relacionado - MySQL Error