IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

erreur insert into set [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 44
    Par défaut erreur insert into set
    Bonsoir,
    j'ais une erreur Mysql quand je veut inssérer des données dans ma table.
    Mais je n'arrive pas a la comprendre

    message d'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 ' membres_mot_de_passe = 1dfe841214688e434b190e54b8ce4e1c, membres_email = antho' at line 1

    Voici le code si besoin

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    //Contrôle si le formulaire a été posté
    if (isset($_POST["action"])&&($_POST["action"]=="inscription"))
    {
    	$membre_pseudo     	 = htmlentities(mysql_real_escape_string(trim($_POST["pseudo"])),ENT_QUOTES);
    	$membre_email      	 = htmlentities(mysql_real_escape_string(trim($_POST["email"])),ENT_QUOTES);
    	$membre_mot_de_passe = htmlentities(mysql_real_escape_string(trim($_POST["motdepasse"])),ENT_QUOTES);
     
    	$requete_verification_membre =  mysql_query("SELECT membres_pseudo FROM membres")or die(mysql_error()); 
     
    	//On control si le membre existe ou non
    	if ($membre_pseudo = mysql_fetch_array($requete_verification_membre))
    		{
    		echo 'Erreur","<font color="#C00000">Ce pseudo est déjà utilisé sur '.$nom_du_site.'</font>';
    		}
     
    			//sinon	 
    			else
    			{
     
    						//hashage du mot de passe
    			$mot_de_passe_hash = md5($membre_mot_de_passe);
     
    			//insertions des données
    			mysql_query("INSERT INTO membres SET membres_pseudo = ".$membre_pseudo.",  membres_mot_de_passe = ".$mot_de_passe_hash.", membres_email = ".$membre_email.", membres_ip = ".$_SERVER['REMOTE_ADDR']."")or die(mysql_error());
    			echo 'votre compte a été crée avec succès.Vous pouvez dès maintenant vous connecter.';
    			}
    }

  2. #2
    Membre émérite
    Homme Profil pro
    Touche à tout informatique autodidacte
    Inscrit en
    Janvier 2007
    Messages
    811
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Touche à tout informatique autodidacte

    Informations forums :
    Inscription : Janvier 2007
    Messages : 811
    Par défaut
    Bonjour,
    La bonne syntaxe de INSERT serait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO nom_de_table (col1,col2) VALUES(value1,value2);
    Je te conseilles de voir ici : http://dev.mysql.com/doc/refman/5.0/fr/insert.html

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 44
    Par défaut
    Oui je l'utilise habituellement mais c'est aussi possible avec un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO table SET chap=valeur
    mais d'après l'erreur ma syntaxe ne doit pas être bonne.

  4. #4
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    C'est vrai, on peu faire de 2 manières, donc il y a 2 syntaxe.
    Pour ma part, on varie l'une de l'autre si on a une vrai raison, sinon ça ne sert à rien.

    Selon ta requête, je ne vois rien de particulier, aucune raison d'utiliser une syntaxe plutôt qu'une autre.
    Donc quelque part, il me semble préférable d'adopter celle que tu juge la meilleure, celle où tu te sent plus à l'aise.

    Vu que tu utilise la syntaxe la plus courante (pas de SET donc), pourquoi ici faire différemment ?


    Mise à part cet aparté, ton erreur est de tenter d'insérer une chaine de caractère dans un champ, et ceci demande à ce quelle soit comprise entre des délimiteurs (des quotes, exemple : champ = 'une chaine de caractère')
    Ceci est valable quelque soit la syntaxe que tu utilise.
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO une_table (champ1, champ2) VALUES ('une chaine', 'une autre chaine')


    Petite parenthèse en passant.
    Je vois que tu converti tes valeurs avec la fonction htmlentities().
    Normalement il n'y a pas à le faire ici dans la Bdd, c'est lorsqu'on produit un affichage (page Web) où on fait cette conversion, car les entités HTML sont interprétées QUE dans un navigateur.
    Si tu venais à récupérer ces données dans un tout autre contexte, ces entités HTML risquent de te causer de sacrés problèmes.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 44
    Par défaut
    Merci RunCodePhp pour ton intervention quand a la raison pour la quelle je souhaite utilisé INSERT INTO ma table SET champ='variable' c'est qu'elle me paraît plus pratique car plus besoin d'afficher tous les champ de la table pour l'insert mais juste ceux que l'ont désire.
    Quand a htmlentities() merci pour cette parenthèse.

    Vu que la chaine a inséré est une variable il faut bien que j'utilise la concaténation?

    EDIT: Problème resolue j'ais honte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO table SET champ = '".$variable."'

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Erreur INSERT INTO rédaction instruction ?
    Par rjl dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 06/07/2012, 10h32
  2. Erreur insert into
    Par hugoclo dans le forum VB.NET
    Réponses: 1
    Dernier message: 23/10/2010, 20h50
  3. insert into : ou est l'erreur?
    Par ouldfella dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 02/04/2006, 15h46
  4. Erreur lors d'une requete insert into.. select
    Par Mr N. dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 04/11/2004, 17h32
  5. erreur SQL ...INSERT INTO
    Par naidinp dans le forum ASP
    Réponses: 20
    Dernier message: 18/09/2003, 11h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo