Maison  >  Questions et réponses  >  le corps du texte

Comment empêcher PHP de signaler les erreurs SQL ?

<p>J'ai ma propre classe de données PHP qui enregistre les erreurs MySQL dans un fichier txt en utilisant <code>mysqli_error($this->conn)</code></p> <p>Tout fonctionnait bien jusqu'à ce que je définisse la gestion des erreurs PHP sur E_ALL. Maintenant, PHP intercepte l'erreur et elle n'a aucune chance d'être gérée par mon gestionnaire d'erreurs MySQL. </p> <p>Ce ne serait pas un problème sauf que PHP n'a pas enregistré la chaîne SQL complète de l'erreur. Il n'enregistre que les 20 premiers caractères environ, suivis de "...", ce qui n'est pas très utile pour le débogage. </p> <p>Ma question est donc la suivante : est-il possible de dire à PHP d'ignorer les erreurs MySQL tout en gérant les erreurs PHP ? </p> <p>J'ai examiné différents niveaux de error_reporting() mais rien ne semble laisser spécifiquement des erreurs MySQL. </p>
P粉550257856P粉550257856409 Il y a quelques jours603

répondre à tous(1)je répondrai

  • P粉161939752

    P粉1619397522023-09-06 12:49:44

    Vous pouvez le faire en désactivant le rapport d'erreurs mysqli, mais cela ne devrait être fait pour aucun projet standard. En fait, il semble que vous abordez ce problème dans le mauvais sens ! Vous ne devriez pas vouloir désactiver le rapport d'erreurs, vous devez corriger les erreurs !

    Comme vous l'avez mentionné, si l'erreur provient d'une instruction SQL dynamique mal construite, votre code ne doit contenir aucune logique pour gérer ce scénario possible car vous ne voulez pas que l'erreur fasse partie de la conception. Comme toute autre erreur, il s'agit d'un bug dans le code PHP. Le fait que cela se manifeste par une erreur MySQL n’a pas d’importance. Vous devez corriger le code qui crée l'instruction SQL invalide ! La réduction au silence des erreurs n'aide pas à corriger les erreurs !

    En supposant que votre code PHP construit SQL à partir de parties SQL constantes (s'il utilise des variables, alors il y a de plus gros problèmes dans votre code), alors votre tâche consiste à déterminer quel chemin de code est à l'origine de la combinaison incorrecte de mots-clés SQL. Vous pouvez en partie le déduire des erreurs SQL. Le message d'exception vous indiquera quelle est l'erreur de syntaxe. Si l'erreur MySQL n'est pas liée à une syntaxe cassée, le processus est toujours similaire : recherchez la cause de l'erreur et corrigez-la.

    N'écrivez pas de logique spéciale de gestion des erreurs autour du code SQL. C'est déroutant et absolument inutile.

    répondre
    0
  • Annulerrépondre