Erreur sql

Bonjour,

Je me lance dans le php et j'ai l'erreur :

Erreur de syntaxe près de 'DESC, PRIX, DATE, Date_Limite, VALID) VALUES ('ANN_1501820080924' à la ligne 1

voila la contenu de requete :

include('config/config.php'); //inclure la fonction login_unique
$add = sprintf("INSERT INTO '$Table_Annonces' VALUES ('$CODE', '$PSEUDO', '$CATEG', '$S_CATEG', '$SS_CATEG', '$PAYS', '$REGION', '$DEPART', '$CODEP', '$CONTACT', '$MAIL', '$PHONE', '$CPHONE', '$TITRE', '$DESC', '$PRIX', '$DATE', '$Date_Limite', '$VALID')");
mysql_select_db($database, $lien);
mysql_query($add, $lien) or die(mysql_error());
Configuration: Windows XP
Internet Explorer 7.0

7 réponses

  1. Modérateur
    En abusant de la concaténation on ne s'y retrouve plus. On va essayer de reprendre proprement :
    "INSERT INTO '$Table_Annonces'('CODE','PSEUDO','CATEG','S_CATEG','SS_CATEG','PAYS','REGION','DEPART','CODEP','CONTACT','MAIL','PHONE','CPHONE','TITRE','DET','PRIX','DATE','Date_Limite','VALID') VALUES ('$CODE', '$PSEUDO', '$CATEG', '$S_CATEG', '$SS_CATEG', '$PAYS', '$REGION', '$DEPART', '$CODEP', '$CONTACT', '$MAIL', '$PHONE', '$CPHONE', '$TITRE', '$TIT', '$PRIX', '$DATE', '$Date_Limite', '$VALID')"

    Aussi j'ai du mal à comprendre l'intérêt du sprintf ?
    1. slt, je fait le modification et mainat je cette message :
      Erreur de syntaxe près de '' à la ligne 1
    2. Modérateur
      @fakharosHem, ben oui il y a des simple quotes inutiles qui sont apparues au cours de la dé-concaténation. Désolé :D

      "INSERT INTO $Table_Annonces(CODE,PSEUDO,CATEG,S_CATEG,SS_CATEG,PAYS,REGION,DEPART,CODEP,CONTACT,MAIL,PHONE,CPHONE,TITRE,DET,PRIX,DATE,Date_Limite,VALID) VALUES ('$CODE', '$PSEUDO', '$CATEG', '$S_CATEG', '$SS_CATEG', '$PAYS', '$REGION', '$DEPART', '$CODEP', '$CONTACT', '$MAIL', '$PHONE', '$CPHONE', '$TITRE', '$TIT', '$PRIX', '$DATE', '$Date_Limite', '$VALID')"
      Si là ça marche pas je songe au suicide :-)
  2. J ai fait quesque te ma dit mais j ai un autre erreur,

    Erreur de syntaxe près de ''swiss_annonces'(`CODE`,`PSEUDO`,`CATEG`,`S_CATEG`,`SS_CATEG`,`P' à la ligne 1
    1. Modérateur
      Il y a un truc vachement drôle, c'est que MySQL semble opérer sur une table DESC alors qu'elle n'existe pas et qu'il a lui-même "ajouté" cette partie du code, essaie de remplacer l'INSERT par ceci :
      "INSERT INTO '$Table_Annonces'(`CODE`,`PSEUDO`,`CATEG`,`S_CATEG`,`SS_CATEG`,`PAYS`,`REGION`,`DEPART`,`CODEP`,`CONTACT`,`MAIL`,`PHONE`,`CPHONE`,`TITRE`,`DET`,`PRIX`,`DATE`,`Date_Limite`,`VALID`) VALUES ('".$CODE."', '".$PSEUDO."', '".$CATEG."', '".$S_CATEG."', '".$SS_CATEG."', '".$PAYS."', '".$REGION."', '".$DEPART."', '".$CODEP."', '".$CONTACT."', '".$MAIL."', '".$PHONE."', '".$CPHONE."', '".$TITRE."', '".$TIT."', '".$PRIX."', '".$DATE."', '".$Date_Limite."', '".$VALID."')


      A moins que le DESC veuille ici dire autre chose, mais je ne vois pas quoi.
      1. Bonjour,

        Voila structure de table :
        CREATE TABLE `swiss_annonces` (
        `CODE` varchar(200) character set ascii NOT NULL default '',
        `PSEUDO` varchar(20) NOT NULL default '',
        `CATEG` varchar(50) NOT NULL default '',
        `S_CATEG` varchar(15) NOT NULL default '',
        `SS_CATEG` varchar(10) NOT NULL default '',
        `PAYS` varchar(20) NOT NULL default '',
        `REGION` varchar(20) NOT NULL default '',
        `DEPART` varchar(20) NOT NULL default '',
        `CODEP` varchar(10) NOT NULL default '',
        `CONTACT` varchar(20) NOT NULL default '',
        `MAIL` varchar(50) NOT NULL default '',
        `PHONE` varchar(14) NOT NULL default '',
        `CPHONE` varchar(14) NOT NULL default '',
        `TITRE` varchar(50) NOT NULL default '',
        `DET` text NOT NULL,
        `PRIX` varchar(20) NOT NULL default '',
        `DATE` varchar(20) NOT NULL default '',
        `Date_Limite` varchar(30) NOT NULL default '',
        `VALID` char(2) NOT NULL default '0',
        PRIMARY KEY (`CODE`)
        ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

        et voila la requete :

        include('config/config.php'); //inclure la fonction login_unique
        $add_user = sprintf("INSERT INTO '$Table_Annonces' VALUES ('".$CODE."', '".$PSEUDO."', '".$CATEG."', '".$S_CATEG."', '".$SS_CATEG."', '".$PAYS."', '".$REGION."', '".$DEPART."', '".$CODEP."', '".$CONTACT."', '".$MAIL."', '".$PHONE."', '".$CPHONE."', '".$TITRE."', '".$TIT."', '".$PRIX."', '".$DATE."', '".$Date_Limite."', '".$VALID."')");
        mysql_select_db($database, $lien);
        mysql_query($add_user, $lien) or die(mysql_error());
        1. Modérateur
          Tu as essayé laquelle de solution ? Qu'as-tu tapé comme commandes ?
          Quel est la structure de la base maintenant ?
          1. Bonjour,
            Merci pour votre reponse, mais toujours je le même problème.
            Merci de m'idee c urgent.
            1. Modérateur
              Yep,
              DESC est un mot réservé, si possible change son nom
              ALTER TABLE nom_table CHANGE "DESC" "nouveau_nom" VARCHAR(20);
              Si tu ne peux pas, modifie ton INSERT afin d'indiquer tous les attributs et en plaçant DESC entre double quotes, ça devrait marcher :
              INSERT INTO nom_table(attribut1, attribut2, attribut3, "DESC") VALUES('valeur1','valeur2','valeur3','valeur_desc');