Erreur SQL 1064...

Vulfhelm -  
 Vulfhelm -
Bonjour,

Je suis en train de faire un formulaire pour créer des personnages sur mon site, et depuis bientôt 2h je me retrouve face à une erreur qui est très certainement toute bête mais qui me pose un gros problème, je ne peux avancer...

Voici la partie de mon code ou se trouve certainement l'erreur :

// Création du personnage
                         $result = mysql_query("
                              INSERT INTO Personnages(
                                                                     Nom_Perso
                                                                   , Classe 
								   , Argent
								   , Ptsstats
								   , Level
								   , Compte
								   , Vie
								   , Force
								   , Intelligence
								   , Recup
                              )
                              VALUES(
                                                                     '" . $_POST["TB_Nom_Perso"] . "'
                                                                   , '" . 1 . "'
								   , '" . 10 . "'
								   , '" . 0 . "'
								   , '". 1 . "'
								   , '" . $_COOKIE["ID_UTILISATEUR"] . "'
                                                                   , '" . 10 . "'
								   , '" . 10 . "'
								   , '" . 10 . "'
								   , '" . 10 . "'
                              )
                         ");
                         
                         // Si une erreur survient
                         if(!$result)
                         {
                              die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
                         }


Et l'erreur reportée par le mysql error est la suivante :

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 , Intelligence , Recup ' at line 9

Donc depuis tout a l'heure je scrute cette ligne, la commande sql ne fonctionne pas et je suis au bord du suicide (:-p)!

Est ce que vous auriez une idée pour corriger ça?

En vous remerciant d'avance!

Vulfhelm.

9 réponses

  1. DoulyCreations Messages postés 265 Statut Membre 19
     
    Salut,

    Il me semble qu'il y a un problème au niveau des chiffre.
    Les chiffres ne sont pas des variables PHP, or ici elles sont traitées comme tel.
    Essaye avec :

    // Création du personnage
    $result = mysql_query("
    INSERT INTO Personnages(
           Nom_Perso
           , Classe 
           , Argent
           , Ptsstats
           , Level
           , Compte
           , Vie
           , Force
           , Intelligence
           , Recup
     )
     VALUES(
             '" . $_POST["TB_Nom_Perso"] . "'
             , '1'
    	 , '10'
    	 , '0'
    	 , '1'
    	 , '" . $_COOKIE["ID_UTILISATEUR"] . "'
             , '10'
    	 , '10'
    	 , '10'
    	 , '10'
     )
                             ");
                             
                             // Si une erreur survient
                             if(!$result)
                             {
                                  die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
                             }
    2
  2. remy
     
    Salut! je vois pas d'erreur de syntax déja :/ mais essaye d'enlever tes doubles cotes dans tes values...
    0
  3. Vulfhelm
     
    Re,

    Le pire c'est que moi non plus je ne vois pas l'erreur de syntaxe!

    Et j'avais essayé sans les doubles cotes, rien à faire...

    Sacrilège!
    0
  4. remy
     
    t'as bien vérifier avec ta base de donnée si les tables sont bien créer et si t'a pas fais une mini faute ^^ !!
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Vulfhelm
     
    Hello Douly,

    Merci :o)

    C'est fait, ça fait propre!

    Mais ça n'y change rien,

    J'ai essayé de voir s'il detectait bien mes colonnes,
    Si je change Force, en Fo, il dit :Unknown column 'Fo' in 'field list'
    Parcontre si je renomme Intelligence en Intel par exemple, il s'en moque, ne me dit pas que la colonne Intel n'existe pas et poursuit avec l'erreur 1064...
    0
  7. Vulfhelm
     
    Re,

    Bon après avoir essayé diverses choses, quand j'enleve Force, Intelligence, et Recup ainsi que leurs valeurs, ça passe! Miracle !

    Mais ces données sont quand même super importantes,
    Donc il me les faut, et je ne comprends pas pourquoi il bloque pas quand j'enlève ces données et pas une autre...

    Auriez vous une solution alternative ou même une explication?

    En vous remerciant d'avance,

    Vulfhelm.
    0
  8. Utilisateur anonyme
     
    salut,

    pour ce qui est de ton probleme, essaie comme ca :

    $tb_nom_perso = mysql_real_escape_string($_POST["TB_Nom_Perso"]);
    $user_id = mysql_real_escape_string($_COOKIE["ID_UTILISATEUR"]);
    $result = mysql_query("
    INSERT INTO Personnages(
    Nom_Perso
    , Classe
    , Argent
    , Ptsstats
    , Level
    , Compte
    , Vie
    , Force
    , Intelligence
    , Recup
    )
    VALUES(
    '$tb_nom_perso'
    , ' 1 '
    , '10'
    , '0'
    , '1'
    , '$user_id'
    , '10'
    , '10'
    , '10'
    , '10'
    )
    ") OR die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
    0
  9. Vulfhelm
     
    Hello,

    Merci ammmmmmie , mais ça induit encore une erreur qui m'a l'air ressemblante à la précèdente...
    Elle m'énerve cette erreur c'est dingue lol!

    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 , Intelligence , Recup ) VALUES( 'Monperso' , ' 1 ' , '10' , '0' ,' at line 9
    0
  10. Vulfhelm
     
    Re-bonjour à tous!

    Je vais poster une bonne partie de mon code, je ne vois pas du tout est l'erreur, peut-être vient elle de $result,

    ça m'ennuit vraiment, je ne peux pas avancer mon projet...

    Si vous avez une idée pour corriger ça, elle serait la bienvenue :o)!

    Merci d'avance!

    Le code :

    // Affiche le formulaire si l'utilisateur est connecté 
    if(!isset($_COOKIE["ID_UTILISATEUR"]))
    {
         header("Location: index.php");
    }
    else
    {
         
         // Formulaire visible par défaut
         $masquer_formulaire = false;
         
         // Une fois le formulaire envoyé
         if(isset($_POST["BT_Envoyer"]))
         {
              
              // Vérification de la validité des champs
              if(!ereg("^[A-Za-z_]{4,12}$", $_POST["TB_Nom_Perso"]))
              {
                   $message = "Votre nom de personnage doit comporter entre 4 et 12 caractères<br />\n";
                   $message .= "L'utilisation de l'underscore est autorisée";
              
              }
              else
              {
                   
                   // Connexion à la base de données
                   // Valeurs à modifier selon vos paramètres configuration
                   mysql_connect("localhost", "root", "");
                   mysql_select_db("*****");
                   
                   // Vérification de l'unicité du nom du perso
                   $result = mysql_query("
                        SELECT Nom_Perso
                        FROM Personnages
                        WHERE Nom_Perso = '" . $_POST["TB_Nom_Perso"] . "'
    					
                   ");
                   
                   // Si une erreur survient
                   if(!$result)
                   {
                        $message = "Erreur d'accès à la base de données lors de la vérification d'unicité";
                   }
                   else
                   {
                        
                        // Si un enregistrement est trouvé
                        if(mysql_num_rows($result) > 0)
                        {
                             
                             while($row = mysql_fetch_array($result))
                             {
                                  
                                  if($_POST["TB_Nom_Perso"] == $row["Nom_Perso"])
                                  {
                                       $message = "Le nom " . $_POST["TB_Nom_Perso"];
                                       $message .= "est déjà utilisé";
                                  }
                                  
                                  
                             }
                             
                        }
                        else
                        {
                             
    						 
    					
                             
                             // Création du personnage
                             $result = mysql_query("
                                  
    							  INSERT INTO Personnages(
                                         Nom_Perso
                                       , Classe 
    								   , Argent
    								   , Ptsstats
    								   , Level
    								   , Compte
    								   , Vie
    								   , Force, Intelligence
    								   , Recup
    								   )
    								   
                                  VALUES(
                                       '" . $_POST["TB_Nom_Perso"] . "'
                                       , '1'
    								   , '10'
    								   , '0'
    								   , '1'
    								   , '" . $_COOKIE["ID_UTILISATEUR"] . "'
                                       , '10'
    								   , '10'
    								   , '10'
    								   , '10'
    								   
                                  )
    
                             ");
                             
                             // Si une erreur survient
                             if(!$result)
                             {
                                  die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
                             }
                             else
                             {
                                  
                                 
                                       
                                       // On masque le formulaire
                                       $masquer_formulaire = true;
                                       
                                  
                                  
    							  
                             }
                             
                        }
                        
                   }
                   
              }
              
              // Fermeture de la connexion à la base de données
              mysql_close();
              
         }
         
    }
    0