Existe-t-il un moyen de voir une requête préparée telle qu'elle sera exécutée sur la base de données? [dupliquer]
Question
Double possible:
Instructions préparées pour les AOP
J'utilise l'extension mysqli en PHP et je me demande s'il existe un moyen de voir une requête préparée telle qu'elle sera exécutée sur le serveur, par exemple. La requête ressemble à ceci
select * from table1 where id = ? and name = ?
mais je veux voir la requête après avoir renseigné les valeurs, comme ceci:
select * from table1 where id = 20 and name = "John"
La solution
Copie des Déclarations préparées pour les PDO
Réponse courte: non. Une requête préparée ne sera jamais convertie en requête attendue. Il est exécuté directement par le serveur de base de données. Vous pouvez utiliser le journal de requêtes de mysql ou la fonction non documentée de PDO debugDumpParams
, mais ce ne sont que des approximations.
Autres conseils
Activez la journalisation de la requête mysql . enregistrez toutes les requêtes dans un fichier texte que vous pourrez consulter.
Voir où? S'il s'agit de votre code, vous avez la requête et les paramètres préparés, enregistrez-les séparément ou remplacez-les dans la chaîne de requête d'origine. Si la liaison échoue, vous obtiendrez une erreur, sinon vous devez vous attendre à ce que les mêmes valeurs soient "remplies". comme vous les avez spécifiés.
C'est comme ça que la plupart du temps je débogue pour mysql:
$ q = " select * from table1 où id = ". $ id. " et name = ". $ name; echo $ q;
La sortie génère toutes les variables affectées à la requête.
J'espère que je vous ai compris exactement ce que vous vouliez.