Problème d'injection sql

Fermé
vagner Messages postés 15 Date d'inscription samedi 2 août 2008 Statut Membre Dernière intervention 1 juin 2009 - 1 mars 2009 à 20:19
 le père - 1 mars 2009 à 22:25
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 ?
A voir également:

7 réponses

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 15 Date d'inscription samedi 2 août 2008 Statut Membre Dernière intervention 1 juin 2009
1 mars 2009 à 21:11
Ouu très bon à savoir ça,
Merci la syntaxe est correct et mon script fonctionne,
bonne soirée !
0
Utilisateur anonyme
1 mars 2009 à 20:32
Bonjour

à quoi correspond la ligne 39 parmi les lignes de code que tu nous as donné ?
0
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 15 Date d'inscription samedi 2 août 2008 Statut Membre Dernière intervention 1 juin 2009
1 mars 2009 à 21:04
syntax error, unexpected T_ENCAPSED_AND_WHITESPACE ...
et la ligne 39 en fait c'est la requète sql.
0
vagner Messages postés 15 Date d'inscription samedi 2 août 2008 Statut Membre Dernière intervention 1 juin 2009
1 mars 2009 à 21:33
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
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 15 Date d'inscription samedi 2 août 2008 Statut Membre Dernière intervention 1 juin 2009
1 mars 2009 à 22:10
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
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