Erreur mysql update

Résolu
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.

6 réponses

  1. 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 ;)
    1. 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">
      1. 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).
        1. 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.
          1. ne fonctionne pas : Parse error: syntax error, unexpected T_STRING in /beta/reponse.php on line 30
          2. 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.
          3. 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
          4. 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 ...?
          5. Si tu utilises un form, c'est pas mieux de mettre un input type="hidden" ?