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
    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');
    1. Bonjour,
      Merci pour votre reponse, mais toujours je le même problème.
      Merci de m'idee c urgent.
      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,

          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
            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. 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
                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 :-)