Erreur sql au secour
Résolubretonm2004 Messages postés 320 Date d'inscription Statut Membre Dernière intervention -
j'ai un probleme quand j'envoie mon formulaire voici mon erreur
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 'WHERE id= ""' at line 1
voici la ligne en question je l'ai mis en gras
<?
//connextion a la base de donnee
mysql_connect('localhost', 'axxxxx', 'xxxxxx');
mysql_select_db("auto7837_auto");
$id = $_POST['id']; // recuperation de l'id a modifier
if(is_numeric($id) && $id) {
$sql='SELECT * FROM servicenonpubliee WHERE id="'.$id.'"';
$req=mysql_query($sql) or die(mysql_error());
while($row=mysql_fetch_array($req)) {
$typedannonce=$row['typedannonce']; $email=$row['email']; $titre=$row['titre']; $message=$row['message'];
}
}
if(isset($_POST['envoyer'])) {
$id = $_POST['id']; $typedannonce=$_POST['typedannonce']; $email=$_POST['email']; $titre=$_POST['titre']; $message=$_POST['message'];
//on modifie les images la requete
$sql=' UPDATE servicenonpubliee SET typedannonce="'.$typedannonce.'", email="'.$email.'", titre="'.$titre.'", message="'.$message.'", WHERE id= "'.$id.'" ';
mysql_query($sql) or die(mysql_error());
echo 'Vos infos ont été modifiées.';
}
else{
?>
merci
5 réponses
Le problème rencontré est une erreur de syntaxe SQL lors de l'envoi du formulaire, liée à une utilisation incorrecte des guillemets autour de l'identifiant et à une virgule superflue avant WHERE. Des solutions proposées consistent à écrire les requêtes avec des guillemets simples autour de l'id, à supprimer la virgule avant WHERE et à sécuriser les valeurs via une vérification is_numeric ou des paramètres. Plusieurs réponses suggèrent aussi l'utilisation de préférence d'une requête UPDATE sans apostrophes autour des identifiants numériques et d'injecter les valeurs dans la requête avec des placeholders ou l'interpolation sécurisée. En pratique, des exemples corrigés montrent SELECT * FROM servicenonpubliee WHERE id='$id'; et UPDATE servicenonpubliee SET typedannonce='$typedannonce', email='$email', titre='$titre', message='$message' WHERE id='$id'; pour éviter l'erreur near WHERE.
-
A vue de nez je vois 2 souci :
* $id est vide
* si $id est un numérique, il ne faut pas les apostrophe supplémentaires -
$sql=' UPDATE servicenonpubliee SET typedannonce="'.$typedannonce.'", email="'.$email.'", titre="'.$titre.'", message="'.$message.'", WHERE id= "'.$id.'" ';
t as cette ligne la aussi :
$sql='SELECT * FROM servicenonpubliee WHERE id="'.$id.'"';
Fais ca :
$sql="SELECT * FROM servicenonpubliee WHERE id='$id';";
et
$sql= "UPDATE servicenonpubliee SET typedannonce='$typedannonce', email='$email', titre='$titre', message='$message' WHERE id='$id';";
Fais ca aussi :
echo "<h1>mon id est $id </h1>";
en dessous de$id = $_POST['id']; // recuperation de l'id a modifier
Pour vérifier que ta variable id existe-
-
-
je croit que oui voila mon script modifié
<?
//connextion a la base de donnee
mysql_connect('localhost', 'auto7837', 'xxxxxxxx');
mysql_select_db("auto7837_auto");
$id = $_POST['id']; // recuperation de l'id a modifier
echo "<h1>mon id est $id </h1>";
if(is_numeric($id) && $id) {
$sql="SELECT * FROM servicenonpubliee WHERE id='$id';";
$req=mysql_query($sql) or die(mysql_error());
while($row=mysql_fetch_array($req)) {
$typedannonce=$row['typedannonce']; $email=$row['email']; $titre=$row['titre']; $message=$row['message'];
}
}
if(isset($_POST['envoyer'])) {
$id = $_POST['id']; $typedannonce=$_POST['typedannonce']; $email=$_POST['email']; $titre=$_POST['titre']; $message=$_POST['message'];
//on modifie les images la requete
$sql= "UPDATE servicenonpubliee SET typedannonce='$typedannonce', email='$email', titre='$titre', message='$message' WHERE id='$id';";
mysql_query($sql) or die(mysql_error());
echo 'Vos infos ont été modifiées.';
}
else{
?> -
-
-
-
essaie ça :
$sql="UPDATE servicenonpubliee SET typedannonce='".$typedannonce."', email='".$email."', titre='".$titre."', message='".$message."', WHERE id=" .$id ; -
et comme ça:
$sql="UPDATE servicenonpubliee SET typedannonce='".$typedannonce."',email='".$email."',titre='".$titre."',message='".$message."' WHERE id=".$id." " ;
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
c'est règlé j'ai ajouté a mon formulaire cette ligne
<input type="text" name="id" value="<?=$id;?>" size="20" style="display:none" />
et ca a reglé le probleme¸
merci a vous tous pour m'avoir aidé surtout a fxtaa pour m'avoir mis sur la piste
bonne journée :)