Formation PUB010 : PHP, 2025 La base de données

24.9 Vérifier la requête


Les exemples de code disponibles sur le Web répondent rarement aux qualités essentielles d'un programme : robuste٫ fonctionnel٫ sécuritaire٫ convivial٫ performant et clair.

Dans une application PHP qui effectue une requête à la base de données, il est essentiel de corriger quelques lacunes fréquentes.

Deux vérifications essentielles

Après chaque requête, vous devez toujours effectuer deux vérifications :

  • Est-ce que la requête a fonctionné ?
  • Est-ce que la requête a donné des résultats ?

Si vous omettez l'une ou l'autre de ces vérifications, votre site Web pourrait planter, donner des résultats inattendus ou même offrir une porte d'entrée aux hackers.

Est-ce que la requête a fonctionné?

Commençons par la première vérification : la requête a-t-elle fonctionné.

Une requête pourrait ne pas fonctionner pour plusieurs raisons :

  • Vous avez effectué une erreur de syntaxe.
  • Vous avez mal orthographié le nom d'un champ ou d'une table.
  • La structure de la table a changé.
  • etc.

Pour vérifier si la requête a fonctionné, il faut travailler avec un try...catch depuis PHP 8.

PHP 8.x

$requete = "...";
try {
    $resultat = $mysqli->query($requete); // exécute la requête
    ...
} catch (Exception $e) {
    echo "<p class='message-erreur'>Nous sommes désolés, les données ne peuvent pas être affichées.</p>";
}

PHP < 8

Si vous travaillez avec PHP 7.x, les erreurs de requête seront vérifiées comme suit :

PHP 7.x

$requete = "...";

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

 

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

   ...

}

else {

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

}

Est-ce que la requête a donné des résultats?

Certains traitements devront nécessiter un travail particulier lorsque la requête ne retourne aucun enregistrement.

Par exemple, si on doit afficher la liste des clients et qu'il n'y en a aucun dans la base de données, on voudra afficher un message plutôt que de laisser la page blanche.

Pour vérifier si une requête a retourné des enregistrements, on peut utiliser $mysqli->affected_rows.

PHP 8.x

$requete = "SELECT id, prenom, nomfamille FROM clients ORDER BY nomfamille, prenom";

try {

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

 

    if ($mysqli->affected_rows > 0) {    // si la requête a retourné au moins un enregistrement

        ...   // traitement des données

    }

    else {

        echo "<p class='message-avertissement'>Il n'y a présentement aucun client dans le système.</p>";

    }

 

    $resultat->free();   // libère immédiatement la mémoire qui était allouée

 
} catch (Exception $e) {
    echo "<p class='message-erreur'>Nous sommes désolés, les données ne peuvent pas être affichées.</p>";
}

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre