[Résolu][PDO] Connaître le SQL d'une requête préparée - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : [Résolu][PDO] Connaître le SQL d'une requête préparée (/showthread.php?tid=4493) |
[Résolu][PDO] Connaître le SQL d'une requête préparée - Ter Rowan - 20-12-2009 hello en train de finaliser mon "parser" simili bbcode (cf un post un peu plus bas) je développe ma première interface mysql via PDO et j'ai quelques difficultés sur une requête préparée en effet PDO me retourne un message d'erreur Citation :SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'desc = 'Le', isArticle = '1' WHERE id_ref = '1' AND langue = 'F mais voilà, y a qu'un morceau de la requête et j'aimerai bien voir la requête totale je ne sais pas trop où chercher le résultat de la requête (errorInfo ne me donne pas le détail complet) savez vous quelle méthode utilisée pour connaitre la requête globale, que je puisse trouver l'erreur ? pour info la requête préparée est : Code PHP :
RE: [PDO] connaitre le "sql" d'une requête préparée - Kihmé - 20-12-2009 en sql desc peut être utiliser comme caractère d'un order by, donc donner le nom desc à un champs n'est pas une bonne idée, peut être que ça pertube la requête. En tout cas moi j'évite toujours d'utiliser des caractères sql comme nom de tables ou de champs... RE: [PDO] connaitre le "sql" d'une requête préparée - Ter Rowan - 20-12-2009 han ! ben merci beaucoup c'était bien cela (pour le bug) par contre la question initiale reste entière pour la suite Comment voir la requête générée ? (si c'est possible) RE: [PDO] connaitre le "sql" d'une requête préparée - Kihmé - 21-12-2009 tu peux te l'afficher avec un echo, mais je vois pas trop ce que tu veux en faite? RE: [PDO] connaitre le "sql" d'une requête préparée - christouphe - 21-12-2009 en cherchant j'ai pas trouvé, je ne pense pas que ce soit possible car, si je me réfère à d'autre type de langage où les requêtes sont préparées (oracle notament), les variables sont remplacées au moment de la validation donc de l'instruction execute() RE: [PDO] connaitre le "sql" d'une requête préparée - Anthor - 21-12-2009 Tu passe ta requête dans prepare ou dans execute directement ? Code PHP :
Ça ne fonctionne que si la requête a pu être préparée, sinon $return vaut false. RE: [PDO] connaitre le "sql" d'une requête préparée - Ter Rowan - 21-12-2009 je ne l'ai pas sous la main mais c'est dans le cas de requetes préparées type exemple du net Code PHP :
ce qui m'intéresserait là c est de lire "SELECT nom, couleur, calories FROM fruit WHERE calories < 150 AND couleur = 'rouge'" puis "SELECT nom, couleur, calories FROM fruit WHERE calories < 175 AND couleur = 'jaune'" voyez ce que je veux dire ? l objectif est que si le :couleur induit une erreur je puisse l'interpréter. Mon soucis précédent venait de "desc" mais je pensais au départ que c'était le contenu d'une des chaines en paramètres qui posait problème... et là je ne sais pas comment voir la "requête finale" exemple si dans :couleur on met " jaune' OR ''=' " RE: [PDO] connaitre le "sql" d'une requête préparée - Anthor - 21-12-2009 le :couleur ne peux jamais induire d'erreurs de construction, puisque la requête est préparé. Dans ton exemple, la variable serait échappé, donc ton OR ne ferait parti que d'une chaine quelconque. Sans étendre la classe de base, et en ajoutant une méthode, PDOStatement ne te retournera pas la requête exécutée. RE: [PDO] connaitre le "sql" d'une requête préparée - Ter Rowan - 21-12-2009 ok donc en conclusion si erreur il y a dans une requête préparée, l'erreur vient forcément de la requête ... "de base" (sais pas trop comment l'identifier) si j'ai une erreur, je cherche uniquement dans... ça quoi : Code PHP :
merci pour vos retours RE: [Résolu][PDO] connaitre le "sql" d'une requête préparée - Anthor - 21-12-2009 Globalement, tu es censé mettre des ` (AltGr + 7) autour des champs pour éviter le problème que tu as eu ^^ Sinon tu peux utiliser des ORM qui te permettent de construire ta requête sous forme d'objet ou autre. |