Pb syntaxe requète DELETE (php)

Résolu/Fermé
Gwendo69 Messages postés 147 Date d'inscription lundi 29 septembre 2008 Statut Membre Dernière intervention 28 juin 2013 - 27 mars 2009 à 00:14
Gwendo69 Messages postés 147 Date d'inscription lundi 29 septembre 2008 Statut Membre Dernière intervention 28 juin 2013 - 4 avril 2009 à 17:20
Bonsoir,

lorsque j'essaie de faire ces requêtes.
//récupère l'identifiant de l'artiste
$identifiant = 'SELECT id_artiste FROM artiste WHERE nom_artiste="'.$choix.'"';
//supprime les données inscrites dans la table
$supprimer = 'DELETE FROM information WHERE id_type="1" AND id_artiste="'.$identifiant.'"';
//lance le req
mysql_query ($identifiant) or die ('Erreur SQL !'.$identifiant.'<br />'.mysql_error());
mysql_query ($supprimer) or die ('Erreur SQL !'.$supprimer.'<br />'.mysql_error());

J'ai ce message d'erreur:
Erreur SQL !DELETE FROM information WHERE id_type="1" AND id_artiste="SELECT id_artiste FROM artiste WHERE nom_artiste="blabla""
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 'nom de l'artiste choisi""' at line 1

Savez vous quelle est la bonne syntaxe?
Merci, Gwendo.
A voir également:

5 réponses

Azer_Ty Messages postés 104 Date d'inscription vendredi 31 octobre 2008 Statut Membre Dernière intervention 4 juillet 2011 60
27 mars 2009 à 00:27
Bonsoir,

Votre problème est simple :
Vous voulez mettre en identifiant de votre DELETE le "résultat" du SELECT, cependant :
- d'une part vous n'exécutez pas la première requête avant la suppresion, donc vous n'aurez pas d'identifiant.
- d'autre part votre variable $identifiant contient une "requête", une chaine de caractère.

Il est don certain qu'il y ai une erreur.
La solution est d'exécuter le SELECT, récupérer le résultat dans une autre variable (le véritable identifiant) et d'utiliser cette variable dans le DELETE.

Sinon la syntaxe est correcte à mon avis, au cas où :
http://dev.mysql.com/doc/refman/5.0/fr/data-manipulation.html

Bonne soirée.
1
sebshiva Messages postés 194 Date d'inscription lundi 16 mars 2009 Statut Membre Dernière intervention 17 juin 2010 10
27 mars 2009 à 00:33
Bien vu Azer_Ty
0
Azer_Ty Messages postés 104 Date d'inscription vendredi 31 octobre 2008 Statut Membre Dernière intervention 4 juillet 2011 60
29 mars 2009 à 17:33
Bonjour,

En réalité "mysql_query" ne fait qu'exécuter la requête, pour ce qui est des INSERT, DELETE et UPDATE il n'y a pas de problème.
En revanche pour les SELECT il faut "traiter" le résultat retourné par mysql_query, l'une des solution est d'utiliser des fonctions tels que "mysql_fetch_assoc" pour avoir dans un tableau les résultats ligne par ligne.

Pour plus de détails un site référence en php : https://www.php.net/
Pour la fonction mysql_fetch_assoc : https://www.php.net/manual/fr/function.mysql-fetch-assoc.php

Bonne journée.
1
sebshiva Messages postés 194 Date d'inscription lundi 16 mars 2009 Statut Membre Dernière intervention 17 juin 2010 10
27 mars 2009 à 00:24
Salut,

"DELETE FROM information...."
DELETE quoi? FROM information... il est là ton problème.
0
sebshiva Messages postés 194 Date d'inscription lundi 16 mars 2009 Statut Membre Dernière intervention 17 juin 2010 10
27 mars 2009 à 00:24
Et ton problème d'UPDATE, résolu?
0
Gwendo69 Messages postés 147 Date d'inscription lundi 29 septembre 2008 Statut Membre Dernière intervention 28 juin 2013 13
27 mars 2009 à 08:15
Bonjour,
quand je fais ça, je n'ai plus de message d'erreur:

$sql_identifiant = "SELECT id_artiste FROM artiste WHERE nom_artiste='$choix'";
$identifiant = mysql_query ($sql_identifiant) or die ('Erreur SQL ! '.$sql_identifiant.'<br />'.mysql_error());

$supprimer = "DELETE FROM information WHERE id_type=1 AND id_artiste='$identifiant'";
mysql_query ($supprimer) or die ('Erreur SQL !'.$supprimer.'<br />'.mysql_error());

$inserer = 'INSERT INTO information VALUES("","'.$bio.'","'.$identifiant.'","1")';
mysql_query ($inserer) or die ('Erreur SQL !'.$inserer.'<br />'.mysql_error());

Ça me crée bien la nouvelle bio, mais ça ne supprime pas l'ancienne.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Gwendo69 Messages postés 147 Date d'inscription lundi 29 septembre 2008 Statut Membre Dernière intervention 28 juin 2013 13
4 avril 2009 à 17:20
Merci,

Il fallait utiliser mysql_fetch_array() entre les requêtes et l'autre pour le select.
0