Erreur SQL 1064...

Vulfhelm
Invité n'ayant pas de compte PHPfrance

18 juil. 2011, 20:23

Bonjour,
Je suis en train de faire un formulaire pour créer des personnages sur mon site, et depuis bientôt 2jours, 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 pas avancer...
Voici l'erreur affichée :

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

Énervant...

J'ai essayé en enlevant " Vie, Force, Intelligence, Recup " ainsi que leurs valeurs, et là miracle ! Tout se passe bien... Mais c'est que j'ai vraiment besoin de ces valeurs...

Voici mon code :

Code : Tout sélectionner

// 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_]{3,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(); } }
Voilà, si vous reperez l'erreur, car moi je pense que je vais acheter des lunettes :-D, félicitations et grand merci!
Ou même si vous avez une solution alternative, elle serait la bienvenue :o) !

En attendant merci d'avoir passé quelques instants sur mon post!

Vulfhelm.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

18 juil. 2011, 20:53

salut,

A tu afficher la requête pour voir si elle est correcte ?

sinon level est un mot réservé SQL 92, donc cela peux être normal que mysql râle.

soit tu utilise des ` pour protéger ton nom de champ, soit tu change le nom du champ (par l'équivalent français par exemple ;) ) c'est le bon moment le développement pour ce type de changement :)


@+
Il en faut peu pour être heureux ......

Vulfhelm
Invité n'ayant pas de compte PHPfrance

18 juil. 2011, 21:21

Alors là Moogli !

Franchement merci!

Tes ` m'ont sauvé la vie!

Je n'ai plus d'erreur ! Mon code passe impeccablement bien ! Quelle satisfaction...

Je te suis grandement reconnaissant,

Et j'ai appris un plus de truc :o) !

C'est un grand pas pour moi, on ne se moque pas :non: :mrgreen: !

Merci beaucoup Moogli!

Topic résolu! A locker!

Merci beaucoup!

A bientôt

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

18 juil. 2011, 22:10

Topic résolu! A locker!
Tu a des boutons verts sur les messages pour marquer le sujet résolus ;)


@+
Il en faut peu pour être heureux ......