Maison >développement back-end >tutoriel php >Pourquoi les requêtes MySQLi ne génèrent-elles pas d'exceptions même avec `mysqli_report(MYSQLI_REPORT_STRICT)` ?

Pourquoi les requêtes MySQLi ne génèrent-elles pas d'exceptions même avec `mysqli_report(MYSQLI_REPORT_STRICT)` ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-31 07:24:11265parcourir

Why Don't MySQLi Queries Throw Exceptions Even with `mysqli_report(MYSQLI_REPORT_STRICT)`?

Exceptions pour les erreurs de requête MySQLi

Question

Malgré la définition de mysqli_report(MYSQLI_REPORT_STRICT), les erreurs de requête dans MySQLi ne génèrent pas d'exceptions. mysqli_sql_exception n'est levée que pour les erreurs de connexion. Est-il normal de vérifier manuellement la valeur de retour de mysqli_query() pour détecter les échecs de requête ?

Réponse

Oui, une vérification manuelle est souvent nécessaire car :

  1. mysqli_report() : Appel de mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); permet le lancement d'exceptions.
  2. Try-catch : contrairement à la croyance populaire, les exceptions ne doivent pas être utilisées de manière excessive. La plupart des erreurs doivent être traitées de manière centralisée par un gestionnaire d'erreurs à l'échelle du site.

Ancien code :

$result = mysqli_query($DBlink, $SQL);
if($result === false) {
    throw new MySQLiQueryException($SQL, mysqli_error($DBlink), mysqli_errno($DBlink));
}

Au lieu de cela, utilisez uniquement try-catch avec parcimonie pour erreurs qui nécessitent une attention immédiate.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn