Afficher les erreurs à l'aide des fonctions d'erreur MySQLi

Mehvish Ashiq 15 février 2024
  1. Fonctions d’erreur MySQLi de PHP
  2. Conclusion
Afficher les erreurs à l'aide des fonctions d'erreur MySQLi

MySQLi est une fonction PHP utilisée pour accéder au serveur de base de données MySQL. Vous pouvez utiliser cette extension si vous avez MySQL version 4.1.13 ou supérieure.

Il existe différentes fonctions MySQLi que vous pouvez utiliser pour exécuter différentes fonctions dans PHP. Dans cet article, nous allons apprendre les fonctions d’erreur MySQLi.

Nous verrons également comment et où utiliser des exemples de code et observerons les sorties. Pour ce tutoriel, nous utiliserons MySQL version 8.0.27 et PHP version 7.4.1.

Fonctions d’erreur MySQLi de PHP

Dans ce tutoriel, nous allons découvrir les fonctions d’erreur PHP MySQLi suivantes :

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

Toutes ces fonctions peuvent être utilisées dans le style orienté objet et le style procédural. Comprenons les deux syntaxes en utilisant la fonction mysqli_error().

Syntaxe de la fonction mysqli_error() dans le style orienté objet

string $mysqli->error;

Syntaxe de la fonction mysqli_error() dans le style procédural

string mysqli_error ( mysqli $link )

mysqli_error() Fonction dans MySQL

Cette fonction est utilisée pour afficher la dernière description d’erreur pour l’appel de fonction le plus récent (le cas échéant). Il est utilisé lorsque l’on veut savoir si la requête SQL comporte une erreur ou non.

mysqli_error() renvoie la description de l’erreur et une chaîne vide s’il n’y a pas d’erreur. Voir l’exemple suivant.

Exemple de code utilisant le style procédural :

<?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);
?>

Le code ci-dessus tente d’établir la connexion en utilisant les variables $host, $username, $password, $database et enregistre cette connexion dans la variable $connection.

La fonction mysqli_error() prendra cette variable de connexion $connection comme paramètre et vérifiera s’il y a une erreur causée par le récent appel de la fonction MySQLi qui est mysqli_query($connection, $sql) ici.

Production :

afficher les erreurs en utilisant les fonctions d&rsquo;erreur mysqli - pas d&rsquo;erreur en utilisant mysqli_error

Maintenant, changez le nom de la table dans la requête SQL de teacher à person et observez le résultat donné ci-dessous.

Production :

afficher les erreurs en utilisant les fonctions d&rsquo;erreur mysqli - erreur en utilisant mysqli_error

En tant que développeur, nous pouvons facilement comprendre qu’il n’y a pas de table person dans la base de données person (c’est ce que cela signifie dans l’erreur ci-dessus).

Gardez le nom de la table modifié et remplacez la ligne $error_message = mysqli_error($connection); avec $error_message = $connection->error; pratiquer et comprendre le style orienté objet en utilisant la fonction d’erreur MySQLi.

mysqli_errno() Fonction dans MySQL

mysqli_errno() fonctionne de la même manière que mysqli_error(), mais il renverra le code d’erreur au lieu de la description de l’erreur.

Écrivez le code suivant pour pratiquer et comprendre. Vous avez peut-être remarqué que nous utilisons un style procédural pour pratiquer cette fonction.

<?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);
?>

Le code ci-dessus affichera la sortie suivante où vous verrez un nombre comme code d’erreur.

Production :

afficher les erreurs à l&rsquo;aide des fonctions d&rsquo;erreur msyqli - erreur à l&rsquo;aide de mysqli_errno

La question est, pourquoi utilisons-nous cette fonction pour afficher uniquement les chiffres ? Parce que si vous voulez imprimer un message d’erreur convivial (message personnalisé), vous pouvez utiliser ce code d’erreur dans les instructions if-else.

Voir le code suivant et sa sortie ci-dessous.

<?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);
?>

Production :

afficher les erreurs à l&rsquo;aide des fonctions d&rsquo;erreur mysqli - message d&rsquo;erreur personnalisé à l&rsquo;aide de mysqli_errno

mysqli_error_list() Fonction dans MySQL

Cette fonction est très utile pour connaître le code d’erreur, l’état SQL et la description de l’erreur car cette fonction renvoie un tableau contenant toutes les informations nécessaires.

Exemple de code :

<?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);
?>

Production :

afficher les erreurs à l&rsquo;aide des fonctions d&rsquo;erreur mysqli - liste d&rsquo;erreurs à l&rsquo;aide de mysqli_error_list

mysqli_connect_error() Fonction dans MySQL

mysqli_connect_error() renvoie la description de l’erreur de la dernière connexion s’il y en a une. Bien que la fonction die() indique également l’échec de la connexion, mais mysqli_connect_error() renvoie l’erreur que nous pouvons comprendre facilement.

Écrivez d’abord le code suivant, voyez sa sortie, puis nous la comparerons avec la sortie produite par 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);
?>

Production :

afficher les erreurs en utilisant les fonctions d&rsquo;erreur mysqli - erreur en utilisant mysqli_connect_error partie a

Voir la sortie donnée ci-dessus ; vous pouvez voir que l’erreur que nous pouvons comprendre se situe quelque part au milieu.

Imaginez, si vous avez 2 ou 3 erreurs, ce ne serait pas facile à trouver. Maintenant, utilisez mysqli_connect_error() et voyez la différence en utilisant le code et la sortie suivants.

<?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);
?>

Production :

afficher les erreurs en utilisant les fonctions d&rsquo;erreur mysqli - erreur en utilisant mysqli_connect_error partie b

La sortie ci-dessus indique clairement qu’il n’y a pas d’utilisateur nommé newroot, ce qui ne vous permet pas d’accéder à la base de données.

mysqli_connect_errno() Fonction dans MySQL

Cette fonction se comporte comme mysqli_connect_error() mais affiche le code d’erreur plutôt que le message d’erreur. Nous pouvons utiliser ce code d’erreur pour écrire des messages d’erreur personnalisés.

Exemple de code :

<?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);
?>

Production :

afficher les erreurs en utilisant les fonctions d&rsquo;erreur mysqli - erreur en utilisant mysqli_connect_errno

Conclusion

Compte tenu de toute la discussion et des exemples, nous avons conclu deux catégories principales. La première catégorie montre les erreurs sur les requêtes SQL et l’autre sur les connexions à la base de données.

Selon les besoins du projet, nous pouvons imprimer le message d’erreur ou le code d’erreur dans chaque catégorie.

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