Erreur de syntax dans une requete sql

Invité
Invité n'ayant pas de compte PHPfrance

30 juil. 2007, 17:57

Bonjours a tous,

voila mon bon de code :
function view_com($mod,$nid)
{
	include('modules/news/index.php');
	lire($nid);
	
	$sql = mysql_query("SELECT * FROM comment WHERE nid = " . $nid . " AND mod = ".$mod."   ") or die(mysql_error()) ;
	while(list($id,$mod,$nid,$pseudo,$mail,$message,$timestamp) = mysql_fetch_array($sql))
		{
			$pseudo = stripslashes($pseudo);
			$message = stripslashes($message);
			$date = date('d/m/Y à H\hi', $timestamp);
			
			echo "<table style=\"width:610px\">\n"
						."<tr><hr>\n"
							."<td><b>".$pseudo."</b> <span style=\"font-size:9px\"> Posté le ".$date."</span></td>\n"
						."</tr>\n"
						
						."<tr>\n"
							."<td><span style=\"font-size:14px\"> " .$message. "</span></td>\n"
						."</tr>	\n"
					."</table>\n"
					."<hr>\n";
				
		}
}
Et cela m'indique une erreur :
Erreur de syntaxe près de '= news' à la ligne 1

Merci de votre aide car la je suis bloqué

Eléphanteau du PHP | 11 Messages

30 juil. 2007, 17:59

je ne m'étais pas logué

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

30 juil. 2007, 18:00

Je suppose que puisque "news" n'apparait pas dans ta requête, cela doit être contenu par l'une de tes variable, et comme toute chaine de caractère en SQL, elle devrait être délimitée par... par... aller, à toi de trouver ;)

Prend l'habitude de mettre tes requêtes dans des variables et de les afficher lorsqu'elles ne fonctionne pas, l'erreur te sautera beaucoup plus facilement aux yeux :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 11 Messages

30 juil. 2007, 18:27

merci de la rapidité de ta reponse
	$sql = "SELECT * FROM comment WHERE nid = ".$nid." AND mod = '".$mod."' ";
	$sql2 = mysql_query($sql) or die($sql) ;
	while(list($id,$mod,$nid,$pseudo,$mail,$message,$timestamp) = mysql_fetch_array($sql2))
J'ai ajouter des guillemets simples mais le problème persiste.
La requete qui s'affiche est celle la :

SELECT * FROM comment WHERE nid = 9 AND mod = 'news'

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

30 juil. 2007, 18:33

Conserve le mysql_error() dans le or die() (ce qui ne t'empêche pas d'afficher également la requête sql :)), cela te permet de connaitre la nature du problème, car à priori, là c'est plus un problème de syntaxe :)

Tu as bien les colonnes nommées "nid" de type numérique (int, tinyint, float..) et "mod" de type chaine (char, varchar, text..) dans ta table comment ?
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 11 Messages

30 juil. 2007, 18:37

le 'nid' est de type int(11) et le 'mod' est de type text.

Comment on fait pour mettre la requette et l'erreur en meme temps dans le die() ?

Merci encore

ViPHP
ViPHP | 5924 Messages

30 juil. 2007, 18:41

Bah la fonction die(), tu lui passes une chaine de caractères, donc, au lieu de lui donner le résultat de mysql_error(), tu lui donnes la concaténation de ta requète et de mysql_error(), par exemple :
die('Erreur : ' . mysql_error() . "\n" . 'Requète : ' . $ta_requete);

Eléphanteau du PHP | 11 Messages

30 juil. 2007, 18:48

Merci Sékiltoyai, je n'avais pas mis les points.

Eléphanteau du PHP | 11 Messages

30 juil. 2007, 19:06

information supplementaire :

les variables transites à travers les liens de cette facon :
http://127.0.0.1:8080/alex29260/index.p ... news&nid=9

Cela ne pose pas de probleme?

Eléphanteau du PHP | 11 Messages

30 juil. 2007, 21:01

J'ai resolu mon probleme en remplacant mod par module dans la requete.

Merci quand meme pour votre aide et la rapidité de vos reponses.

EDIT : n'étant pas logué quand j'ai créé le post je ne peux pas le renomer pour mettre en resolu. Si un admin pouvait le faire ... merci

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

30 juil. 2007, 22:05

EDIT : n'étant pas logué quand j'ai créé le post je ne peux pas le renomer pour mettre en resolu. Si un admin pouvait le faire ... merci
Un bouton est prévu pour ça tu ne dois pas l'éditer. Cependant tu dois tout de même être inscrit pour le faire alors incris toi :wink:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 11 Messages

30 juil. 2007, 22:58


Cependant tu dois tout de même être inscrit pour le faire alors incris toi :wink:
Mais je suis inscris seulement je n'étais pas connecté quand j'ai créé le topic.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

30 juil. 2007, 23:13

Mais je suis inscris seulement je n'étais pas connecté quand j'ai créé le topic.
Ha comment ça se fait alors que je n'ai pas reçu ton chèque ? :twisted:

:wink:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute