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 :

probléme avec la requête [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2009
    Messages : 3
    Points : 4
    Points
    4
    Par défaut probléme avec la requête
    bonjour à tous
    je suis entrain de faire un script de newsletter en php/mysql pour un site
    mais le problème c'est que j'ai une erreur à la requête mysql
    voici la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("INSERT INTO softbb_post (titre, texte, idfa, idsfa, pseudode, lock, newsletter) VALUES ('$titre' , '$news' , '1' , '17' , '$id' , '1' , '1' )")or die(mysql_error());
    et voici l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    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 'lock, newsletter) VALUES ('Newsletter de  du 13/02/2010' , 'test ____' at line 1
    merci

  2. #2
    Membre à l'essai
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2010
    Messages : 9
    Points : 10
    Points
    10
    Par défaut Guillemets en cause et mauvaise utilisation de fonction
    Salut !

    Il y a deux erreurs. Pour y remédier, je te préconise deux choses :

    Afin de bien comprendre, mets ta requête dans une variable. Ce qui te donnerait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete = "INSERT INTO softbb_post (titre, texte, idfa, idsfa, pseudode, lock, newsletter) VALUES ('$titre' , '$news' , '1' , '17' , '$id' , '1' , '1' )";
    Mais, déjà, là, il y a une erreur. Étant donné que tu mets des variables avec du texte, il faut concaténer. Voilà la version correcte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete = "INSERT INTO softbb_post (titre, texte, idfa, idsfa, pseudode, lock, newsletter) VALUES (".$titre." , ".$news." , '1' , '17' , ".$id." , '1' , '1' )";
    Décomposons pour l'explication :

    Un peu de texte entouré de guillemets : "INSERT INTO softbb_post (titre, texte, idfa, idsfa, pseudode, lock, newsletter) VALUES ("

    Pour assembler cette chaîne avec la variable $titre, on met un point.

    Ce qui donne :

    "INSERT INTO softbb_post (titre, texte, idfa, idsfa, pseudode, lock, newsletter) VALUES (".$titre

    A laquelle tu concatènes à nouveau du texte... : " , "

    Ce qui nous amène à :

    "INSERT INTO softbb_post (titre, texte, idfa, idsfa, pseudode, lock, newsletter) VALUES (".$titre." , "

    Etc...

    Mais là où ça gêne le plus, c'est dans l'utilisation de la fonction mysql_query(chaîne $requete , $connexion). Tu as mis la requête, mis tu as oublié la connexion à ta base.

    Ce que tu devrais avoir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $requete = "INSERT INTO softbb_post (titre, texte, idfa, idsfa, pseudode, lock, newsletter) VALUES (".$titre." , ".$news." , '1' , '17' , ".$id". , '1' , '1' )";
    mysql_query($requete, $connexion);
    Bonne continuation !

  3. #3
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Bonjour,

    Fait un echo de ta requête, il semble qu'il y ait un problème sur $news ...

    Par contre tu peux laisser ta syntaxe de '$news' car il y a une évaluation automatique de tes variables dans ta requête
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Non, les chaînes [SQL] doivent bien être quotées (et il faudrait qu'elles soient échappées - on ne sait pas si c'est le cas).

    Le problème, je pense, c'est que vous utilisez un mot-clé réservé de MySQL : LOCK, comme nom de champ. Vous devez le renommer ou en protéger le nom par des backticks (`).

  5. #5
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Non, les chaînes [SQL] doivent bien être quotées
    ???? c'est à dire ? Dans les deux cas elles sont quotées

    Bien joué pour le 'lock' et les ` En plus je viens de comprendre leur utilités donc 2X
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Citation Envoyé par Fench Voir le message
    c'est à dire ? Dans les deux cas elles sont quotées
    C'était en réponse à riplay777 dont la proposition est encore "pire".

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2009
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    le sujet est résolu
    c'était bien le lock qui fessais planté ma requête
    merci à tous

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

Discussions similaires

  1. [TADOQuery] Problème avec une requête
    Par yannba dans le forum Bases de données
    Réponses: 2
    Dernier message: 20/01/2006, 13h51
  2. Problème avec une requête
    Par demonark dans le forum Langage SQL
    Réponses: 3
    Dernier message: 19/09/2005, 05h35
  3. Problème avec une requête
    Par ringostarr dans le forum Langage SQL
    Réponses: 5
    Dernier message: 19/04/2005, 20h34
  4. Problème avec une requête
    Par snoopy69 dans le forum Débuter
    Réponses: 2
    Dernier message: 20/01/2005, 12h39
  5. problème avec une requête imbriquée
    Par jaimepasteevy dans le forum Langage SQL
    Réponses: 13
    Dernier message: 05/12/2003, 10h29

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