Formation PUB010 : PHP, 2022 Déboguer une requête SQL

15.2 Retrouver le message d'erreur MySQL


La propriété $mysqli->error permet de retrouver le texte de l'erreur générée par MySQL.

Notez que ce code est adapté pour PHP 7.x.

Si vous travaillez avec PHP 8.x, vous devrez y apporter quelques ajustements.

PHP

$requete = "SELECT ...";

$resultat = $mysqli->query($requete);

 

if ($resultat) {    // si la requête a fonctionné

    ...

}

else {

    echo "<p class='message-erreur'>Nous sommes désolés, les clients ne peuvent pas être affichés. Cause de l'erreur : ". $mysqli->error . "</p>";

}

Attention : les détails techniques ne devraient être affichés qu'en mode débogage et ce, pour deux raisons importantes :

  • L'affichage d'un message d'erreur technique peut faire fuir certains internautes.
  • Les informations présentées dans le message d'erreur peuvent fournir assez de données aux utilisateurs malveillants pour les mettre sur une bonne piste...

▼Publicité Le texte se poursuit plus bas

Afficher $mysqli->error dans le débogueur

La solution idéale consiste à afficher $mysqli->error dans le débogueur. En plaçant un point d'arrêt sur la ligne qui détecte qu'un problème est survenu (dans le else de if ($resultat)), vous pourrez voir la valeur de chacune des propriétés de l'objet $mysqli, dont $mysqli->error.

Affichage de $mysqli->error dans le débogueur

Afficher $mysqli->error dans une fonction de débogage

L'utilisation de notre fonction de débogage permet d'afficher le message d'erreur pendant le développement tout en assurant que rien ne sera affiché lorsque le site sera en production.

PHP

$requete = "SELECT ...";

$resultat = $mysqli->query($requete);

 

if ($resultat) {    // si la requête a fonctionné

    ...

}

else {

    echo "<p class='message-erreur'>Nous sommes désolés, les clients ne peuvent pas être affichés.</p>";

    echo_debug($mysqli->error);

}

Une autre solution intéressante consiste à enregistrer le message d'erreur dans notre fichier journal.

PHP

$requete = "SELECT ...";

$resultat = $mysqli->query($requete);

 

if ($resultat) {    // si la requête a fonctionné

    ...

}

else {

    echo "<p class='message-erreur'>Nous sommes désolés, les clients ne peuvent pas être affichés.</p>";

    log_debug($mysqli->error);

}

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Par Christiane Lagacé
Dernière révision le 29 février 2024
Merci de partager !

Site fièrement hébergé chez A2 Hosting.

Soumettre