Rechercher : dans
Par :

Pb syntaxe requète DELETE (php)

Dernière réponse le 4 avr 2009 à 17:20:03 Gwendo69, le 27 mar 2009 à 00:14:10 
 Signaler ce message aux modérateurs

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.

Configuration: Windows Vista
Firefox 3.0.7

Meilleures réponses pour « pb syntaxe requète DELETE (php) » dans :
Parse error: syntax error, unexpected $end VoirLorsque l'on programme en Php, on se retrouve inévitablement un jour devant ce genre d'erreur: Parse error: syntax error, unexpected $end in Command line code on line 1 En français, ça signifie grossièrement: "Erreur d'analyse du code: il y a une...
PHP - Structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle? On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non, c'est-à-dire si la valeur de son expression vaut 0 ou 1 (le PHP associe le mot clé true à 1...
Oracle - Les requêtes hiérarchiques VoirCet article se base sur des tests et recherches réalisés dans la version 8.1.5 d'Oracle. Introduction Tout au long de cet article, nous allons nous intéresser à une structure de données permettant de créer un Forum de discussion, matérialisé par...
PHP - Connexion à un annuaire LDAP VoirIntroduction à LDAP PHP permet la connexion et l'envoi de requêtes sur un annuaire LDAP, c'est-à-dire un serveur permettant de stocker des informations de manière hiérarchique. Un serveur LDAP est conçu pour être capable de gérer les opérations...

1

sebshiva, le 27 mar 2009 à 00:24:03

Salut,

"DELETE FROM information...."
DELETE quoi? FROM information... il est là ton problème. Linux - Ubuntu 8.04 - FireFox 3.0.7
~~(-_-)~~

Répondre à sebshiva

2

sebshiva, le 27 mar 2009 à 00:24:53

Et ton problème d'UPDATE, résolu? Linux - Ubuntu 8.04 - FireFox 3.0.7
~~(-_-)~~

Répondre à sebshiva

3

Azer_Ty, le 27 mar 2009 à 00:27:31
  • +1

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.
Le monde n'est que feinte ...

Répondre à Azer_Ty

4

sebshiva, le 27 mar 2009 à 00:33:21

Bien vu Azer_Ty Linux - Ubuntu 8.04 - FireFox 3.0.7
~~(-_-)~~

Répondre à sebshiva

5

Gwendo69, le 27 mar 2009 à 08:15:51

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.

Répondre à Gwendo69

6

Azer_Ty, le 29 mar 2009 à 17:33:15
  • +1

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 : http://www.php.net/
Pour la fonction mysql_fetch_assoc : http://www.php.net/manual/fr/function.mysql-fetch-assoc.php

Bonne journée.
Le monde n'est que feinte ...

Répondre à Azer_Ty

7

 Gwendo69, le 4 avr 2009 à 17:20:03

Merci,

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

Répondre à Gwendo69