Maison  >  Article  >  développement back-end  >  Comment réparer \"Erreur fatale : exception non interceptée \'mysqli_sql_exception\' avec le message \'Aucun index utilisé dans la requête/instruction préparée\'\" en PHP ?

Comment réparer \"Erreur fatale : exception non interceptée \'mysqli_sql_exception\' avec le message \'Aucun index utilisé dans la requête/instruction préparée\'\" en PHP ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-21 08:33:30302parcourir

How to fix

Une erreur peut se produire lorsque vous exécutez votre code indiquant "Erreur fatale : exception non interceptée 'mysqli_sql_exception' avec le message 'Aucun index utilisé dans la requête/instruction préparée'."

Le message d'erreur « Aucun index utilisé dans la requête/instruction préparée » n'est pas la cause première de l'erreur fatale ; il s'agit plutôt d'un avertissement de MySQL indiquant qu'un index n'a pas été utilisé lors de l'exécution de la requête, ce qui peut entraîner un ralentissement des performances. Cet avertissement n'est généralement pas suffisamment grave pour provoquer une erreur fatale.

La véritable source de l'erreur fatale dans ce cas est votre code PHP, qui est provoqué par trois facteurs :

  1. mysqli signale de nombreux avertissements, même dans des circonstances relativement bénignes.
  2. Vous avez configuré mysqli_report(MYSQLI_REPORT_ALL), ce qui oblige votre programme à traiter à la fois les erreurs et les avertissements comme des exceptions mysqli_sql_exception.
  3. Votre code PHP n'attrape pas cette exception, ce qui signifie qu'elle n'est pas encapsulée dans un bloc try{} avec un bloc catch(){} correspondant. Par conséquent, les exceptions non interceptées sont considérées comme fatales.

Vous ne pouvez pas résoudre le premier problème, comme indiqué dans l'autre réponse. Par conséquent, vous pouvez soit modifier votre configuration mysqli_report(...) en MYSQLI_REPORT_STRICT ou MYSQLI_REPORT_OFF ou, en effet, en tout paramètre autre que MYSQLI_REPORT_ALL.

(Edit : w3d propose une explication convaincante à ce sujet dans son commentaire ci-dessous, recommandant mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT) comme alternative viable.)

Pour les meilleures pratiques et pour utiliser cette fonctionnalité efficacement, vous devez adopter la meilleure pratique consistant à utiliser les blocs try{} et catch(){} de manière appropriée tout au long de votre code.

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