|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |||||||
|
Membre actif
![]() Patrick Mingard Inscription : mai 2006 Messages : 166 ![]() |
Bonjour à tous,
Je suis confronté actuellement à un problème que je n'avais jamais vu auparavant. Je travaille actuellement sur WAMP 1.7.2. Mon soucis est le suivant : une de mes requête refuse d'être exécutée lorsqu'elle est envoyée par un script PHP. Une erreur m'est retournée : Citation:
Code :
Code :
Je comprends pas tellement comment une requête peut se comporter différemment suivant qu'elle est appelée par un script PHP ou par phpmyadmin. Pour info, voici la requête en question : Code :
Pour information, cette requête est appelée comme requête finale d'une transaction (MySQL fermant automatiquement les transactions lorsque des requêtes de type CREATE, ALTER ou DELETE). Lorsque je copie-colle la requête dans phpmyadmin je ne suis bien sûr pas dans une transaction. C'est la seule différence que je vois. De plus le script marche parfaitement si je supprime les deux sous-requêtes ALTER TABLE et que je garde uniquement le CREATE. C'est uniquement quand les trois sous-requêtes sont mises ensemble qu'elles ne passent pas. Pour certaines raison je peux que très difficilement les exécuter séparément, elles doivent se trouver les trois dans la même requête. Si vous avez une idée pour trouver la solution, je vous serais très reconnaissant |
|||||||
|
|
00
|
|
|
#2 | |
|
Membre Expert
![]() Inscription : janvier 2005 Messages : 2 288 ![]() |
Si tu lis la documentation de la fonction mysql_query() il est dit
Citation:
EDIT: si tu dois absolument les faire en meme temps pour éviter d'avoir des données fausses a un moment dans ta table (entre les deux requetes, meme si c'est quelques millisecondes ca peut etre ennuyeux parfois) il faut que tu verrouilles ta table avant la première requete et que tu la déverrouilles a la fin EDIT 2: comme c'est une création de table ca ne marchera pas, par contre tu dois pouvoir en UNE requete unique créer ta table, l'index et la clé étrangère. si tu as trois requetes différentes c'est parce que en la créant dans phpmyadmin tu l'as fait séparément au lieu de le faire en une seule fois |
|
|
|
00
|
|
|
#3 |
|
Membre actif
![]() Patrick Mingard Inscription : mai 2006 Messages : 166 ![]() |
Arg, c'est génant ça.
En fait je génère la requête SQL par un compilateur et il m'est très difficile de savoir au moment ou je crée la table si il y aura une clé étrangère dedans ou non. De plus cette requête est retournée par une fonction, c'est un peu génant. Bref, je vais retourner de ma fonction une table de requêtes à exécuter et je ferai un foreach() une fois la table récupérée. Merci de la réponse très rapide |
|
|
00
|
|
|
#4 |
|
Membre actif
![]() Patrick Mingard Inscription : mai 2006 Messages : 166 ![]() |
Effectivement ça marche bien avec un retour d'array de requêtes.
phpmyadmin utilise soit une autre commande d'accès à la base de données pour exécuter plusieurs requêtes en un appel ou alors phpmyadmin fait une coupure à chaque ';' lui-même avant d'exécuter les différentes sous-requêtes. En tout cas dans phpmyadmin ça marchait en mettant dans un écran SQL les trois sous-requêtes en une requête. (je le mentionne car ce sera peut être utile un jour à un visiteur qui fera une recherche avant de poster... laissez moi rêver |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com