Erreur SQL 1064...

Fermé
Vulfhelm - 17 juil. 2011 à 16:59
 Vulfhelm - 18 juil. 2011 à 17:14
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

DoulyCreations Messages postés 187 Date d'inscription lundi 11 avril 2011 Statut Membre Dernière intervention 23 mars 2015 19
17 juil. 2011 à 17:56
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
Salut! je vois pas d'erreur de syntax déja :/ mais essaye d'enlever tes doubles cotes dans tes values...
0
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
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

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

Posez votre question
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
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
Utilisateur anonyme
17 juil. 2011 à 21:32
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
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
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