Erreur mysql update

Résolu
bartimus37 Messages postés 193 Date d'inscription   Statut Membre Dernière intervention   -  
bartimus37 Messages postés 193 Date d'inscription   Statut Membre Dernière intervention   -
Bonjours, j'ai un problème avec mysql update :
Erreur SQL !mysql_query("UPDATE news SET reponse=réponse de test WHERE id=\'.$nid.\'");
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 'mysql_query("UPDATE news SET reponse=réponse de test WHERE id=\'.$nid.\'")' at line 1
Voici le code :
$nid= $_GET['id']; 
$rep = $_POST['reponse'];                      
    $sql = 'mysql_query("UPDATE news SET reponse='.$rep.' WHERE id='.$nid.'");';   
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error()); 
    mysql_close();  


page de code complète : https://pastebin.com/DMwgZPDy
Le fichier config.php en include_once contient la connexion a la base de donné .
Merci de vos réponse.
A voir également:

6 réponses

Guiver Messages postés 262 Date d'inscription   Statut Membre Dernière intervention   87
 
Bizarre ton code, essaye ça :

 
$sql = "UPDATE news SET reponse='".$rep."' WHERE id=".$nid."";

ou si ton champs ID n'est pas de type nombre :
 
$sql = "UPDATE news SET reponse='".$rep."' WHERE id='".$nid."'";

Comme le dis "gardiendelanuit", ce n'est pas bon de concaténer les variables directement dans les requêtes.
De plus, le mysql est obsolète depuis quelques années. privilégie mysqli ou PDO dorénavant ;)
2
gardiendelanuit Messages postés 1770 Date d'inscription   Statut Membre Dernière intervention   264
 
Bonjour,

Il faut rajouter des magiques quotes pour les values de la requête surtout pour les chaînes de caractères:
$sql = mysql_query("UPDATE news SET reponse=\''.$rep.\'' WHERE id=\''.$nid.'\'");'; 


EDIT: mysql query est une fonction et tu la met dans ta string??
Merci de mettre "Résolu" quand le problème est réglé!
La connaissance c'est comme la confiture: moins on en a et plus on l'étale.
0
bartimus37 Messages postés 193 Date d'inscription   Statut Membre Dernière intervention   14
 
ne fonctionne pas : Parse error: syntax error, unexpected T_STRING in /beta/reponse.php on line 30
0
gardiendelanuit Messages postés 1770 Date d'inscription   Statut Membre Dernière intervention   264
 
Renseigne toi sur les " et '
Pour ton cas
$sql = mysql_query("UPDATE news SET reponse='$rep' WHERE id='$nid';");

Ton code est sujet aux injections SQL aussi.
0
bartimus37 Messages postés 193 Date d'inscription   Statut Membre Dernière intervention   14
 
Toujours une erreur ...
Erreur SQL !1
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 '1' at line 1
0
bartimus37 Messages postés 193 Date d'inscription   Statut Membre Dernière intervention   14
 
je crois que la variable $nid pose problème car elle est appelé en $_GET
$nid = $_GET['id'];
on arrive sur la page reponse.php?id=2
ensuite on remplit le formulaire et on reviens sur reponse.php qui dit que
$nid = $_GET['id'];
et $nid est vide
Je ne vois pas comment résoudre ça ...?
0
gardiendelanuit Messages postés 1770 Date d'inscription   Statut Membre Dernière intervention   264
 
Si tu utilises un form, c'est pas mieux de mettre un input type="hidden" ?
0
Guiver Messages postés 262 Date d'inscription   Statut Membre Dernière intervention   87
 
Salut,

C'est une bonne idée de mette le code sur pastebin.
Mais tu peux l'indenter correctement stp la prochaine fois ?
Je viens de passer 5 minutes à le faire pour le lire correctement.

Donc
<INPUT TYPE=HIDDEN NAME=id VALUE=<?$_GET['id']?>> 

Inutile de le mettre dans un <TD>, ça fait un espace vide dedans, mets le juste en dessous de ton <form>. Et écris le plutôt comme ça :
<INPUT TYPE="HIDDEN" NAME="id" VALUE="<?php $_GET['id'] ?>" /> 

Ensuite, tu as une balise <td> en trop juste avant <td align="right">
Pour finir, sur ton dernier if, tu ferme l'accolade après $erreur; mais tu ne l'ouvre pas (accolade que tu ne mets pas dans ton premier if d'ailleurs).
0
bartimus37 Messages postés 193 Date d'inscription   Statut Membre Dernière intervention   14
 
j'ai fait tout ce que tu m'a dit : https://pastebin.com/HQxYgF1C
mais ça ne fonctionne pas : Parse error: syntax error, unexpected $end
in reponse.php on line 38 .
C'est le dernier if ...
0

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

Posez votre question
Guiver Messages postés 262 Date d'inscription   Statut Membre Dernière intervention   87
 
L'indentation n'est pas ton fort on dirait ^_^
Mais c'est déjà beaucoup mieux, merci pour l'effort.

J'ai pas le temps de regarder en détail se soir, mais je vois déjà que ton
if ( $pseudo =='admin')
{

n'est pas fermé.
Ensuite, tu as oublié un double quote dans ton form :
<form action="reponse.php method="post">
au lieu de
<form action="reponse.php" method="post">
0
bartimus37 Messages postés 193 Date d'inscription   Statut Membre Dernière intervention   14
 
Il n'y a plus aucune erreur mais l'id ne s'affiche pas ...
https://pastebin.com/qyjUzZ8e
0
gardiendelanuit Messages postés 1770 Date d'inscription   Statut Membre Dernière intervention   264
 
<?php echo $_GET['id']; ?>

Sûrement non? :D
0
bartimus37 Messages postés 193 Date d'inscription   Statut Membre Dernière intervention   14
 
Merci !!!!!!!!
0