Page 1 sur 1

error in your SQL syntax

Posté : 15 oct. 2005, 13:30
par Hichoum
Bonjour tout le monde :),

j'ai fais un script qui me permet de modifier un edito en ligne le fonctionnement de celui ci est :
Si on rentre le bon titre et la bonne signature alors on fait un UPDATE de l'edito. masi je dois avoir un probleme de syntax MYSQL voici le code erreur que me renvois mysql :


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 '' at line 1

j'ai beau regarder je ne vois vraiment pas d'ou ca peu venir alors si qq pouvait m aider j ai mis le code dans la wall :
http://phpdebutant.org/wall3476.php

D'avance merci
Hicham

Posté : 15 oct. 2005, 13:37
par Cyrano
Quel est le message d'erreur complet ?

Posté : 15 oct. 2005, 16:02
par Truc
Salut, affiche ta requete générée par php=> echo $rq;

a tous les coups une variable est vide,certainement cell-ci $ligne[3], qui d'ailleur n'est pas encadré par des quotes.

Posté : 15 oct. 2005, 16:36
par Hichoum
Voila le message d erreur complet :
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 '' at line 1

UPDATE edito_tb SET edito=('gjhglkhglkgkglkg') WHERE signature=

donc ce que je ne comprends pas c est pourquoi signature=rien comment puis je faire pour y remedier

D'avance merci

Posté : 15 oct. 2005, 16:44
par Cyrano
Regarde dans ta clause where, la valeur n'est pas entre apostrophes :
$rq = "UPDATE edito_tb SET edito=('$E') WHERE signature=$ligne[3]";
devrait être:
$rq = "UPDATE edito_tb SET edito=('". $E ."') WHERE signature='". $ligne[3] ."'";

Posté : 15 oct. 2005, 16:47
par Truc
ton code n'est pas tres clair..
$rq = "SELECT titre FROM edito_tb WHERE (titre= '$T' AND signature='$S')";
 51 	         $result = mysql_query($rq);
 52 	         $nb = mysql_num_rows($result);
 53 	         if ($nb == 1)
 54 	         {
 55 	             $ligne = mysql_fetch_array($result, MYSQL_NUM);
 56 	             $rq = "UPDATE edito_tb SET edito=('$E') WHERE signature=$ligne[3]";
ta requete initiale est celle-ci:
SELECT titre FROM edito_tb WHERE (titre= '$T' AND signature='$S')
tu récupère donc uniquement le "titre" en exécutant grace a $result = mysql_query($rq);

Mais ensuite tu fait mysql_fetch_array($result, MYSQL_NUM); sur la meme requete et tu fait appel au champ 3, hors tu n'a que le titre (donc 1 champ)