tester une requete sql avant son execution - PHP - Programmation
Marsh Posté le 13-10-2008 à 16:12:22
Si je ne dit pas de bêtise, si la requête n'est pas bonne, alors son exécution ne sera pas longue. Tu récupèreras une erreur instantanément.
Marsh Posté le 13-10-2008 à 16:15:33
PierreC a écrit : Bonjour, |
pas de solution...s'il est assez grand pour faire ses requêtes, il est assez grand pour comprendre les messages d'erreur que tu lui fais remonter du sgbd...
Marsh Posté le 13-10-2008 à 16:16:13
en effet lol,
Mais je ne souhaite pas l'executer.
Je souhaite juste savoir si elle s'executera correctement quand je le désirerai.
pas de solution...s'il est assez grand pour faire ses requêtes, il est assez grand pour comprendre les messages d'erreur que tu lui fais remonter du sgbd... |
Bonne idée, je vais dire ca à mon client je suis sure qu'il va etre content :-)
Mais enfin, vous bossez dans le meme monde que moi ?
y'a toujours la solution du explain, mais ca me gene d'utiliser une fonction qui n'est pas vraiment prévu pour ca
Marsh Posté le 13-10-2008 à 16:16:37
PierreC a écrit : en effet lol, |
tu peux pas. C'est le sgbd qui sait ça. Et il ne le sait pas avant d'essayer.
Marsh Posté le 13-10-2008 à 16:20:56
PierreC a écrit : en effet lol, |
Quel intérêt ?
Soit tu développe (ou trouve) une lib qui analyse la syntaxe de la requête et détermine si elle s'exécutera correctement ou non.
Ou bien tu envoies directement la requête telle quelle et le serveur l'exécutera directement si elle est valide, sinon te renverra un message d'erreur. Le tout demande une seule commande, une seule requête au serveur de BDD.
Soit tu envoies une première fois la requête au serveur pour analyse. Il te dit que la requête n'est pas bonne. Ok, ça t'as pris autant de temps que de tenter d'exécuter la requête, mais tu savais avant que ce serait pas bon. Soit Il te dit que la requête est correcte, tu l'envoies à nouveau pour exécution. Deuxième accès au serveur, pour faire quelque chose d'inutile ou presque. Côté optimisation, on a vu mieux quand même
Marsh Posté le 13-10-2008 à 16:31:55
Quel intérêt ? |
Chaque requête met environ une minute à s'executer. L'admin souhaite en saisir 2 ou 3, valider leur syntaxe, puis lancer l'ensemble, allez prendre un café et revenir.
Marsh Posté le 13-10-2008 à 16:33:32
Ok, je vois bien l'intérêt maintenant.
J'ai peur que ce soit difficile. Les requêtes sont dépendantes les unes des autres ?
C'est du mySql ?
Marsh Posté le 13-10-2008 à 16:43:20
PierreC a écrit :
|
tu peux toujours essayer un prepare() sans exec derrière, et voir si les erreurs de syntaxe remontent comme ça...
Marsh Posté le 13-10-2008 à 16:53:20
merci pour vos réponses qui sont déjà un peu plus constructive :-)
prepare() |
ca semble etre du mysqli seulement non ? je suis encore en mysql
Bon j'ai finalement coder comme ma première intuition me le dictait avec un EXPLAIN : http://dev.mysql.com/doc/refman/5. [...] plain.html
cela donne un truc de ce genre :
|
Marsh Posté le 13-10-2008 à 16:57:54
PierreC a écrit :
|
C'est moche.
sinon oui le prepare c'est mysqli seulement...
Marsh Posté le 13-10-2008 à 17:09:41
C'est moche. |
je sais, c'est pour ca que j'étais venue ici pour trouver mieux
Marsh Posté le 13-10-2008 à 17:17:05
PierreC a écrit :
|
bah une autre idée ce serait tout simplement de contrôler la syntaxe à la mimine pour essayer de déterminer si ça ressemble à une requête bien formée...mais ce sera jamais aussi précis/correct que ce que te répond le sgbd...
Marsh Posté le 13-10-2008 à 15:35:40
Bonjour,
Contexte :
Dans le projet que je développe l'admin dans son back office peut ecrire une requete SELECT dans un textarea.
Problème :
Avant l'execution de la requete je souhaiterai tester si elle va correctement s'excuter
Question :
Comment faire en php pour tester une requete avant son execution afin de savoir si elle n'a pas de probleme de syntaxe (sachant que son execution réel peut etre longue) ?
j'ai pensé à faire un explain dessus, mais ce n'est pas l'objectif d'un explain.
Merci.
---------------
Du tofu en Alsace : www.tofuhong.com