Mysql
 sql >> Base de données >  >> RDS >> Mysql

Débogage PDO - Afficher la requête APRÈS la liaison ?

C'est le mythe le plus répandu sur le débogage SQL. "J'ai besoin de voir la requête après préparation pour pouvoir dire si une erreur s'est produite". Le fait est que vous ne le faites pas , et je vais vous dire pourquoi.

Une fois qu'une requête a été préparée, l'espace réservé peut être considéré comme une chaîne/entier valide . Vous vous fichez de ce qu'il y a dedans.

De plus, si vous configurez correctement PDO, vous obtiendrez une PDOException détaillée détaillant l'erreur que vous avez rencontrée avec une trace complète de l'endroit où l'erreur s'est produite, et vous obtenez la chaîne d'erreur de MySQL, ce qui rend les erreurs de syntaxe très faciles à trouver.

Pour activer les exceptions PDO et désactiver les préparations émulées :

$pdo = new PDO("mysql:host=localhost;dbname=database_name", "user", "password");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);