Gestion des erreurs de requête MySQLi comme exceptions
Introduction
Dans MySQLi, les erreurs de requête sont généralement signalés sous forme d’avertissements ou de messages d’erreur. Cependant, les développeurs préféreront peut-être convertir ces erreurs en exceptions pour une meilleure gestion des erreurs. Cet article examine le processus de transformation des erreurs de requête MySQLi en exceptions et aborde un problème courant où les échecs de requête renvoient false sans déclencher d'avertissements ou d'exceptions.
Problème
Lors de l'exécution de MySQLi requêtes, les développeurs vérifient souvent si mysqli_query() renvoie false pour détecter les erreurs de requête. Cependant, cette approche peut s'avérer peu pratique et ne détecte pas toujours les erreurs inattendues.
Ancien code
$result = mysqli_query($DBlink, $SQL); if ($result === false) { throw new MySQLiQueryException($SQL, mysqli_error($DBlink), mysqli_errno($DBlink)); }
Question
Pourquoi dans certains cas, ni avertissements ni exceptions ne sont émis lorsqu'une requête échoue, obligeant les développeurs à vérifier explicitement les fausses valeurs de retour de mysqli_query()?
Réponse
Pour activer les exceptions pour les erreurs de requête MySQLi, vous devez définir correctement le niveau de rapport d'erreurs à l'aide de la fonction mysqli_report(). L'extrait de code suivant illustre l'utilisation appropriée :
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
En définissant le niveau de rapport d'erreurs sur MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT, MySQLi commencera à générer des exceptions pour toutes les erreurs et erreurs strictes, y compris les échecs de requête.
Attention
Bien que l'utilisation d'exceptions pour la gestion des erreurs soit généralement recommandée, elle est importante pour éviter une utilisation excessive de blocs try-catch. La gestion des erreurs doit être centralisée via un gestionnaire d'erreurs commun pour minimiser la surcharge du code et garantir un rapport d'erreurs cohérent.
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!