Code Php erreur

Bonjour,

Alors voila, j'essai de crée un code php mais celui ci me marque une erreur voici mes pages :

insertion.php :

<form name="insertion" action="insertion2.php" method="POST">
  <table border="0" align="center" cellspacing="2" cellpadding="2">
    <tr align="center">
      <td>Code</td>
      <td><input type="text" name="code"></td>
    </tr>
    <tr align="center">
      <td>Nom Personnage</td>
      <td><input type="text" name="nom"></td>
    </tr>
 
    <tr align="center">
      <td colspan="2"><input type="submit" value="insérer"></td>
    </tr>
  </table>
</form>


insertion2.php :

<?php
  //connection au serveur
  $cnx = mysql_connect( "localhost", "*****", "******" ) ;
 
  //sélection de la base de données:
  $db  = mysql_select_db( "ancestra_other" ) ;
 
  //récupération des valeurs des champs:
  //nom:
  $nom     = $_POST["code"] ;
    $pseudo     = $_POST["nom"] ;
  
 $nom = 33 or die ( mysql_error() ) ;
 
  //création de la requête SQL:
  $sql = "INSERT  INTO personnages (name, force)
            VALUES ( '$pseudo', 200,) " ;
 
  //exécution de la requête SQL:
  $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
 
  //affichage des résultats, pour savoir si l'insertion a marchée:
  if($requete)
  {
    echo("L'insertion a été correctement effectuée") ;
  }
  else
  {
    echo("L'insertion à échouée") ;
  }
    if($nom)
  {
    echo("Code reussi") ;
  }
  else
  {
    echo("Code echoué") ;
	}
?>


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 'force) VALUES ( 'Colere', 200,)' at line 1

10 réponses

  1. $sql = 'INSERT INTO personnages (name, force)
    VALUES ( '.$pseudo.', 200)';
    0
    1. Merci de ta réponse, mais j'ai toujours la même erreur.
      0
      1. t'as essayé après que j'ai modifié mon post?
        0
        1. t'as un erreur dans l'écriture de ta requete, essaye d'enlever les guillemets ....
          0
          1. faut tester je suis pas experte,
            $sql = "INSERT INTO personnages (name, force)
            VALUES ( '.$pseudo.', 200)";
            $sql = "INSERT INTO personnages (name, force)
            VALUES ( $pseudo, 200)";
            ...
            0
          2. INSERT INTO "nom de table" ("colonne 1", "colonne 2", ...)
            VALUES ("valeur 1", "valeur 2", ...)
            0
        2. essaie ceci si tu as une concaténation (variables dans le code) :

          $sql= 'INSERT INTO "nom de table" ("'.$col1.'", "'.$col2.'", ...)  VALUES ("'.$val1.'", "'.$val2.'", ...)';

          ou ceci si tu n'en a pas...

          $sql= 'INSERT INTO "nom de table" ("colonne 1", "colonne 2", ...) '; 
          VALUES ("valeur 1", "valeur 2", ...)

          Abandonne ce qui te trouble au profit de ce qui apaise ton coeur.
          0
          1. Aucun de vos codes ne marchent merci quand même ^^ je comprend pas, est-ce-que cela viendrai seulement de ces ligne la??
            0
            1. La variable $pseudo est directement remplacée par sa valeur, si et seulement si la requête est encadrée par des guillemets et pas des apostrophes.

              $nom = "Bilow";  
              $sql = "Bonjour $nom";
              $sql vaudra Bonjour Bilow.

              $nom = "Bilow";  
              $sql = 'Bonjour $nom';
              $sql vaudra Bonjour $nom.

              Pour insérer du texte dans une requête SQL, il faut l'encadrer par des guillemets ou des apostrophes. Avoir une requete du type
              INSERT INTO table VALUES(texte)
              ... ne fonctionnera pas. Il faut encadrer le texte :
              INSERT INTO table VALUES('texte')
              ou encore
              INSERT INTO table VALUES("texte")
              Avec la variable, on peut utiliser différentes méthodes :
              $sql = "INSERT INTO table VALUES(\"$pseudo\")";  
              $sql = "INSERT INTO table VALUES('$pseudo')";  
              $sql = 'INSERT INTO table VALUES(\''.$pseudo.'\')';  
              $sql = 'INSERT INTO table VALUES("'.$pseudo.'")';

              Mais tu ne peux pas laisser $pseudo, comme ca, sans encadrement.

              ;-)
              0
              1. $nom = "Bilow";   
                $sql = 'Bonjour $nom';  
                $sql vaudra Bonjour Bilow. 

                désolé mais tu as rien compris...
                $nom = 'Bilow';   
                $sql = "Bonjour $nom";  
                $sql vaudra Bonjour Bilow. 

                et

                $nom = 'Bilow';   
                $sql = 'Bonjour '.$nom;  
                $sql vaudra Bonjour Bilow. 

                sont justes
                0
              2. Ne dit pas que je n'ai rien compris : première phrase je te dis qu'avec des guillemets en encadrement, la variable est remplacée. J'ai juste commis une erreur d'un caractère...

                $sql = "$nom";
                $sql vaudra Bilow
                
                $sql = '$nom';
                $sql vaudra $nom

                On est d'accord ?
                0
              3. ok si c'est une erreur de frappe, tu n'as pas rien compris désolé ...
                0
              4. Pas grave ;)
                0
            2. Ceci n'arrange toujours pas mon probleme :)
              0
              1. Tu as encore ce problème ? As-tu essayé les différentes méthodes que l'on t'as données ? Envoie-nous le nouveau code ($sql = ...).
                ;-)
                0