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 :

(Encore une) Erreur de syntaxe MySQL


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 78
    Points : 26
    Points
    26
    Par défaut (Encore une) Erreur de syntaxe MySQL
    Bonjour,

    je pense qu'on sera d'accord pour dire que les erreurs de syntaxe lors d'un envoi de requête SQL en PHP sont le lot quotidien de nombreux d'entre nous...

    Donc je m'en remets à vous pour m'aider à pointer du doigt l'apostrophe en trop, le '.' de concaténation manquant, ou tout autre débilité du même genre, qui, après de nombreuses heures à décrypter la chaîne, ne m'apparaît pas visible.

    Il s'agit d'une requête INSERT, pour rajouter un enregistrement dans ma base appelée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    // Une syntaxe possible (sources: internet)
     
    $result = mysql_query("INSERT INTO members_profile SET userId='$userId', name='$name', firstname='$firstname', gender='$gender', jobTitle='$jobTitle', email='$email', phone='$phone', signature='$signature' ;") or die ("Requête invalide : <br />".mysql_error());
     
     
    // la syntaxe que j'utilise le plus souvent
     
    $result = mysql_query("INSERT INTO members_profile ('userId', 'name', 'firstname', 'gender', 'jobTitle', 'email', 'phone', 'signature') VALUES (".$newId." , ' ".$name." ', ' ".$firstname. " ', ' ".$gender. " ', ' ".$jobTitle. " ' , ' ".$email." ' , ' ".$phone. " ' , ' ".$signature." ' );") or die ("Requête invalide : <br />".mysql_error());

    Seul userId est de type INT (shortInt pour être précis), le reste étant du VARCHAR, il est légitime d'y encadrer les valeurs des $variables php par des guillemets simples. N'est-ce pas ?
    Nota: j'ai tout de même testé bon nombre de combinaisons possibles (tout avec les guillemets, tout sans, tout avec guillemets sauf le userId de type INT ...)


    Merci de m'apporter une réponse pour l'une ou l'autre des syntaxes.
    Cordialement,

    B.

  2. #2
    Membre expérimenté
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Points : 1 595
    Points
    1 595
    Par défaut
    Bonjour,
    Personnellement j'utilise cette syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $insertSQL = "INSERT INTO members_profile (userId, name, firstname, gender, jobTitle, email, phone, signature) VALUES ('$newId', '$name', '$firstname', '$gender', '$jobTitle', '$email', '$phone', '$signature')";
    $result = mysql_query($insertSQL) or die ("Requête invalide : <br />".mysql_error());

  3. #3
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    // la syntaxe que j'utilise le plus souvent
     
    $result = mysql_query("INSERT INTO members_profile ('userId', 'name', 'firstname', 'gender', 'jobTitle', 'email', 'phone', 'signature') VALUES (".$newId." , ' ".$name." ', ' ".$firstname. " ', ' ".$gender. " ', ' ".$jobTitle. " ' , ' ".$email." ' , ' ".$phone. " ' , ' ".$signature." ' );") or die ("Requête invalide : <br />".mysql_error());

    Dans la première parenthèse :
    INSERT INTO members_profile ('userId', 'name', 'firstname', 'gender', 'jobTitle', 'email', 'phone', 'signature')

    Tu ne peux pas utiliser les simples quotes ! soit tu ne met rien soit tu met ` mais pas ' !
    donc :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    INSERT INTO members_profile (userId, name, firstname, gender, jobTitle, email, phone, signature)
     
    // ou
     
    INSERT INTO members_profile (`userId`, `name`, `firstname`, `gender`, `jobTitle`, `email`, `phone`, `signature`)

    Perso, moi je met rien ^^

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Points : 20
    Points
    20
    Par défaut
    n1n0x à raison, mais la syntaxe veut qu'on mette des `, cependant, ça marche sans.
    Après, à toi de voir.

Discussions similaires

  1. Aide pour identifier une erreur de syntaxe
    Par tribalou dans le forum Cobol
    Réponses: 10
    Dernier message: 21/02/2008, 00h46
  2. [VB.Net] Pourquoi ai-je une erreur de syntaxe INSERT UPDATE ?
    Par zzzmoi dans le forum Accès aux données
    Réponses: 14
    Dernier message: 17/08/2006, 14h21
  3. [Tableaux] encore une erreur du au changement
    Par cyrill.gremaud dans le forum Langage
    Réponses: 17
    Dernier message: 15/06/2006, 09h47
  4. Erreur de syntaxe MySQL
    Par lynal dans le forum Requêtes
    Réponses: 9
    Dernier message: 30/05/2006, 10h31
  5. Y aurait-il une erreur de syntaxe ?
    Par mpat dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 21/12/2005, 15h07

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