Maison >développement back-end >tutoriel php >Pourquoi mes messages d'erreur PDO ne s'affichent-ils pas ?
Comment obtenir des informations d'erreur à partir de PDO
Lors de l'utilisation de PDO, vous pouvez rencontrer des situations dans lesquelles les messages d'erreur ne s'affichent pas, malgré la configuration du mode d'erreur vers PDO::ERRMODE_WARNING ou PDO::ERRMODE_EXCEPTION. Cet article examinera les raisons de ce comportement et fournira des solutions pour résoudre le problème.
Comprendre le paramètre de mode d'erreur
PDO propose trois options pour les modes d'erreur : PDO ::ERRMODE_SILENT, PDO::ERRMODE_WARNING et PDO::ERRMODE_EXCEPTION. Par défaut, PDO fonctionne en mode PDO::ERRMODE_SILENT, qui supprime tous les messages d'erreur. Définir le mode sur PDO::ERRMODE_WARNING amène PDO à afficher des messages d'erreur sous forme d'avertissements PHP, tandis que PDO::ERRMODE_EXCEPTION déclenche des exceptions pour les erreurs.
Exemple de scénario
Dans votre exemple de code, vous essayez de préparer une instruction SQL non valide (@$%T$!!!) et vous ne parvenez pas à récupérer de messages d'erreur. Cela se produit parce que les instructions préparées émulées, qui sont utilisées par défaut, n'effectuent pas de vérifications de syntaxe pendant la phase prepare(). Par conséquent, les erreurs ne sont détectées que pendant la phase d'exécution().
Solution
Pour résoudre ce problème, vous devez vous assurer que votre pilote MySQL prend en charge les instructions préparées natives. . Les instructions préparées natives effectuent des vérifications de syntaxe pendant la phase prepare(), vous permettant de détecter rapidement les erreurs. Pour activer les instructions préparées natives, ajoutez la ligne suivante à votre code :
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
De plus, vous pouvez utiliser la méthode setAttribute() pour définir le mode d'erreur sur PDO::ERRMODE_EXCEPTION. Cela amènera PDO à lever des exceptions pour les erreurs, ce qui facilitera leur gestion dans votre code.
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
En employant des instructions préparées natives et en définissant le mode d'erreur sur PDO::ERRMODE_EXCEPTION, vous pouvez vous assurer que PDO fournira des messages d'erreur détaillés, vous permettant de diagnostiquer et de résoudre efficacement tout problème lié à la base de données.
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!