Code Php erreur

Noyou -  
Bilow Messages postés 1014 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
A voir également:

10 réponses

Nath
 
$sql = 'INSERT INTO personnages (name, force)
VALUES ( '.$pseudo.', 200)';
0
Noyou
 
Merci de ta réponse, mais j'ai toujours la même erreur.
0
Nath
 
t'as essayé après que j'ai modifié mon post?
0
Noyou
 
oui même erreur désolé
0

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

Posez votre question
Nath
 
t'as un erreur dans l'écriture de ta requete, essaye d'enlever les guillemets ....
0
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
ktm620enduro Messages postés 293 Date d'inscription   Statut Membre Dernière intervention   38
 
INSERT INTO "nom de table" ("colonne 1", "colonne 2", ...)
VALUES ("valeur 1", "valeur 2", ...)
0
Bilow Messages postés 1014 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
ktm620enduro Messages postés 293 Date d'inscription   Statut Membre Dernière intervention   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
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
Bilow Messages postés 1014 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
ktm620enduro Messages postés 293 Date d'inscription   Statut Membre Dernière intervention   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
Bilow Messages postés 1014 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
ktm620enduro Messages postés 293 Date d'inscription   Statut Membre Dernière intervention   38
 
ok si c'est une erreur de frappe, tu n'as pas rien compris désolé ...
0
Bilow Messages postés 1014 Date d'inscription   Statut Membre Dernière intervention   117
 
Pas grave ;)
0
Noyou
 
Ceci n'arrange toujours pas mon probleme :)
0
Bilow Messages postés 1014 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