Problème d'injection sql

vagner Messages postés 17 Statut Membre -  
 le père -
Bonjour,

J'essais sans relache depuis plus d'un jour cette requette sql :
if (empty($_POST["joureven"]))
else 
	{
$retour = mysql_query("SELECT * FROM evenements WHERE debut LIKE ("$_POST['joureven']%") ORDER BY debut DESC");
	}

Mais php me retourne :
Parse error: syntax error, unexpected T_VARIABLE in /homez.109/poocovtn/www/calendrier/index.php on line 39


Pourant une requete du même type marche sur un autre de mes sites, que faire ?

7 réponses

le père
 
Pardon...
$retour = mysql_query("SELECT * FROM evenements WHERE debut LIKE '$_POST[joureven]%' ORDER BY debut DESC");
pas d'apostrophes autour des index de tableaux à l'intérieur de chaînes entre double quotes
1
vagner Messages postés 17 Statut Membre
 
Ouu très bon à savoir ça,
Merci la syntaxe est correct et mon script fonctionne,
bonne soirée !
0
Utilisateur anonyme
 
Bonjour

à quoi correspond la ligne 39 parmi les lignes de code que tu nous as donné ?
0
le père
 
Bonjour

$retour = mysql_query("SELECT * FROM evenements WHERE debut LIKE '$_POST['joureven']%' ORDER BY debut DESC");

Ta chaîne de requête commençait par ", elle finissait donc par le premier " , celui qu'il y avait avant $_POST...
Ce qu'il y avait après ne voulait plus rien dire
0
vagner Messages postés 17 Statut Membre
 
syntax error, unexpected T_ENCAPSED_AND_WHITESPACE ...
et la ligne 39 en fait c'est la requète sql.
0
vagner Messages postés 17 Statut Membre
 
Hum j'ai encore un petit soucis :
		$retour = mysql_query("SELECT * FROM evenements WHERE valide='1' AND debut LIKE '$_POST[joureven]%' ORDER BY debut DESC";

		while ($donnees = mysql_fetch_array($retour))
		{


Me retourne ça :

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL


dur : (
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
le père
 
Il devrait surtout te dire qu'il te manque une parenthèse après le DESC" mais je suppose que c'est une faute de recopie...
Ajour or die (mysql_error()) à la fin :
$retour = mysql_query("SELECT * FROM evenements WHERE valide='1' AND debut LIKE '$_POST[joureven]%' ORDER BY debut DESC") or die (mysql_error());

Ça ne va pas réparer le problème, mais ça va sortir un message d'erreur qui nous donnera quelques précisions sur la cause.
0
vagner Messages postés 17 Statut Membre
 
Hum alors voila en plus claire ce que j'essais :

		$query  =	'SELECT * FROM evenements
					WHERE valide=1
					AND debut LIKE $_POST[joureven]%
					ORDER BY debut DESC';
		
		$retour = mysql_query($query) or die (mysql_error());


et mysql me renvoit :

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 '[joureven]% ORDER BY debut DESC' at line 3


0
le père
 
Encore un qui n'a rien compris à la différence entre les chaînes entre " et les chaînes entre ' en PHP

Si tu mets ta requête entre ', le $_POST[joureven] à l'intérieur NE REPRESENTE PAS la variable $_POST['joureven'], il représente juste la suite de caractères $,_,P,_ etc...
Il FAUT le mettre entre " pour qu'il soit considéré comme une variable.
De plus, au passage tu as fait disparaitre les ' qui entouraient la valeur du LIKE, ce qui va te donner une autre cause d'erreur.
0