Page 1 sur 1

erreur de syntaxe : comment la corriger?

Posté : 28 juin 2006, 11:32
par wenddy
Bonjour!

Débutante en php et mysql, j'ai fait une requête sql dans phpmyadmin et cela me donne un erreur. Est-ce que quelqu'un pourrait m'aider? D'après l'erreur, il manque une virgule entre "pd.products_description" et "p.products_id" (voir message d'erreur ci dessous). Que dois-je corriger pour ne plus avoir cette erreur?

Voila la reqête que j'ai lancée :

Code : Tout sélectionner

INSERT INTO `configuration` (`configuration_id`, `configuration_title`, `configuration_key`, `configuration_value`, `configuration_description`, `configuration_group_id`, `sort_order`, `last_modified`, `date_added`, `use_function`, `set_function`) VALUES ('', 'Display Product Description', 'PRODUCT_LIST_DESCRIPTION', '99', 'Set to 0 to disable, set to 99 to enable.', '8', '11', '', '', NULL, NULL);
Et voila le message d'erreur :

Code : Tout sélectionner

1064 - Erreur de syntaxe près de '.products_id, p.manufacturers_id, p.products_price, p.products_t' à la ligne 1 select p.products_image, pd.products_name, m.manufacturers_name, pd.products_description p.products_id, p.manufacturers_id, p.products_price, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from products_description pd, products p left join manufacturers m on p.manufacturers_id = m.manufacturers_id left join specials s on p.products_id = s.products_id, products_to_categories p2c where p.products_status = '1' and p.products_id = p2c.products_id and pd.products_id = p2c.products_id and pd.language_id = '1' and p2c.categories_id = '4' order by pd.products_name limit 0, 20
Merci à qui pourra m'expliquer comment ça marche!

Posté : 28 juin 2006, 11:35
par albat
Le message d'rreur que tu indiques ne correspond pas à la requête INSERT INTO
mais plutôt (je vais vérifier en détail...) à la requête SELECT inscrite en-dessous.

Posté : 28 juin 2006, 11:36
par albat
Manquerait pas une virgule ?... ;)
select p.products_image, pd.products_name, m.manufacturers_name, pd.products_description, p.products_id, p.manufacturers_id, p.products_price,

Posté : 28 juin 2006, 11:40
par wenddy
Si, il manque une virgule, c'est ce que j'ai dit dans mon message.
Mais comment je dois corriger ça? Est ce que je dois lancer ce "select.....20"
dans phpmyadmin en ajoutant la virgule?
Je précise que quand je lance la requête "insert into...." je n'ai pas de message d'erreur, mais l'erreur apparait directement sur mon site (pas dans phpmyadmin)

Posté : 28 juin 2006, 11:42
par albat
Mais comment je dois corriger ça?
Est ce que je dois lancer ce "select.....20" dans phpmyadmin en ajoutant la virgule?
Ben ?... Naturellement ! :shock:

Ta requête plante à cause d'une faute de syntaxe.
Il te faut donc corriger cette faute. Tout simplement.

Posté : 28 juin 2006, 11:47
par wenddy
OK, c'est ce que j'ai fait, j'ai lancé "select...." en ajoutant la virgule au bon endroit, mais pas de changement, j'ai toujours l'erreur sur mon site quand je veux afficher une liste de produits... :cry:

Est ce que l'erreur ne vient pas de la requête que j'ai lancée? (insert into) puisque c'est à la suite de cette requête que mon site plante...

Posté : 28 juin 2006, 12:16
par albat
Normalement, tes messages d'erreur devraient t'indiquer
avec suffisamment de précision l'origine des erreurs.

Tu peux aussi te mettre des repères en utilisant la fonction die()
qui se lance en cas d'échec d'une requête.
$res1 = mysql_result($req1) or die("Requête 1 plantée");
// ...
$res2 = mysql_result($req2) or die("Requête 2 plantée");
// ...
Ça te permettra d'isoler avec certitude la requête en cause.