Code Php erreur

Noyou -  
Bilow Messages postés 171 Date d'inscription   Statut Membre Dernière intervention   -
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. Nath
     
    $sql = 'INSERT INTO personnages (name, force)
    VALUES ( '.$pseudo.', 200)';
    0
  2. Noyou
     
    Merci de ta réponse, mais j'ai toujours la même erreur.
    0
  3. Nath
     
    t'as essayé après que j'ai modifié mon post?
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Nath
     
    t'as un erreur dans l'écriture de ta requete, essaye d'enlever les guillemets ....
    0
    1. Nath
       
      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. ktm620enduro Messages postés 377 Statut Membre 38
       
      INSERT INTO "nom de table" ("colonne 1", "colonne 2", ...)
      VALUES ("valeur 1", "valeur 2", ...)
      0
  6. Bilow Messages postés 171 Date d'inscription   Statut Membre Dernière intervention   117
     
    Salut,

    Je n'ai pas encore regardé d'où vient l'erreur mais ATTENTION aux injections SQL !

    ;-)
    0
  7. ktm620enduro Messages postés 377 Statut Membre 38
     
    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
  8. Noyou
     
    Aucun de vos codes ne marchent merci quand même ^^ je comprend pas, est-ce-que cela viendrai seulement de ces ligne la??
    0
  9. Bilow Messages postés 171 Date d'inscription   Statut Membre Dernière intervention   117
     
    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. ktm620enduro Messages postés 377 Statut Membre 38
       
      $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. Bilow Messages postés 171 Date d'inscription   Statut Membre Dernière intervention   117
       
      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. ktm620enduro Messages postés 377 Statut Membre 38
       
      ok si c'est une erreur de frappe, tu n'as pas rien compris désolé ...
      0
    4. Bilow Messages postés 171 Date d'inscription   Statut Membre Dernière intervention   117
       
      Pas grave ;)
      0
  10. Noyou
     
    Ceci n'arrange toujours pas mon probleme :)
    0
    1. Bilow Messages postés 171 Date d'inscription   Statut Membre Dernière intervention   117
       
      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