Requête passant sous phpmyadmin mais pas en script
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:
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 ';ALTER TABLE object_cd ADD INDEX (id_artiste);ALTER TABLE object_cd ADD FOREIGN ' at line 7
Pour précision, cette erreur m'est retournée lorsque mon script exécute ces lignes :
Code:
1 2 3 4
|
$query = ...
mysql_query($query);
die(mysql_error()); |
Par contre, lorsque je change ce morceau de code pour :
Code:
1 2 3
|
$query = ...
mysql_query($query) or die($query); |
et que je copie-colle la requête affichée dans le navigateur dans phpmyadmin, là aucun soucis, la requête est exécutée correctement.
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:
1 2 3 4 5 6 7 8 9 10
|
CREATE TABLE object_cd (
id int(10) unsigned NOT NULL auto_increment,
id_artiste int(10) unsigned NOT NULL,
nom text collate latin1_german1_ci NULL,
prix int(10) NULL,
PRIMARY KEY (ID)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;
ALTER TABLE object_cd ADD INDEX (id_artiste);
ALTER TABLE object_cd ADD FOREIGN KEY (id_artiste) REFERENCES object_artiste (id) ON DELETE CASCADE ON UPDATE CASCADE; |
La table object_artiste existe bien évidemment et elle contient une clé primaire nommée id.
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 ;)