Page 1 sur 2
Variable utilisée dans where
Posté : 09 avr. 2011, 16:41
par Chimonito
Bonjour, j'aimerais savoir s'il est possible de remplacer toto='$tata' par $variable dans l'expression :
SELECT .... FROM .... WHERE toto='$tata'
SELECT .... FROM .... WHERE $variable
Merci Cordialement
Benjamin
Re: Variable utilisée dans where
Posté : 09 avr. 2011, 16:49
par moogli
salut,
si $variable contient la toto='valeur de tata' oui surement après faut voir comment est crée la chaine contenant cette requete.
@+
Re: Variable utilisée dans where
Posté : 09 avr. 2011, 19:08
par chimonito
Non pas exactement
$variable = ( toto='$tata')
Re: Variable utilisée dans where
Posté : 09 avr. 2011, 19:18
par moogli
heu la non tu n'est pas syntaxiquement correct.
Si tu expliquais simplement avec des mots ce que tu souhaite (pourquoi pas avec un exemple avec syntaxe correct) ce serait beaucoup plus simple
@+
Re: Variable utilisée dans where
Posté : 09 avr. 2011, 19:21
par - HXSS -
$tata = "'bla'";
$variable = "toto = $tata";
?
Re: Variable utilisée dans where
Posté : 26 avr. 2011, 19:12
par chimonito
En faite pour être claire,
j'ai un formulaire de recherche avec plusieurs champs text, ex toto, tata, titi, qui quand je l'envoie, me transmet la valeur en variable que je vais utiliser pour cibler ma recherche
Au lieu d'avoir .... WHERE pays= '$toto' AND region=' $tata' AND departement = '$titi';
je veux pouvoir faire quelque chose comme ça :
$tata1 = ' AND region = $tata' ;
$titi1 = ' AND departement = $titi' ;
...... WHERE pays= '$toto' $tata1 $titi1;
Comme ça si titi ou tata ne sont pas renseigné cela evite un message d'erreur
Voilà je ne sais pas si j'ai été assez claire, mais n'hésitez pas
Merci encore
Ben
Re: Variable utilisée dans where
Posté : 26 avr. 2011, 20:22
par Mazarini
Bonjour,
Tu peux constituer la commande SQL comme tu veux. Temps que le contenu est du SQL correcte, pas de problème
Re: Variable utilisée dans where
Posté : 26 avr. 2011, 21:56
par chimonito
Comprends pas
Re: Variable utilisée dans where
Posté : 27 avr. 2011, 08:23
par Mazarini
Bonjour,
Lorsque tu exécute un ordre SQL, tu passe la commande SQL au serveur sous forme de chaine de caractère. Peux importe la manière dont tu constitues la chaine.
Lorsque tu fais la commande mysql_query ( $toto.$titi);
C'est équivalent à :
$SQL = $toto.$titi;
mysql_query ( $SQL);
Re: Variable utilisée dans where
Posté : 27 avr. 2011, 09:26
par chimonito
ok, mais en faite j'aimerais juste savoir s'il est possible de remplacer toto='$tata' par $variable dans l'expression :
SELECT .... FROM .... WHERE toto='$tata'
SELECT .... FROM .... WHERE $variable
Merci
Benjamin
Re: Variable utilisée dans where
Posté : 27 avr. 2011, 10:03
par xTG
Oui c'est possible.

Re: Variable utilisée dans where
Posté : 27 avr. 2011, 10:58
par Mazarini
Bonjour,
Si tu fais
echo "SELECT .... FROM .... WHERE toto='$tata'"
ou
echo "SELECT .... FROM .... WHERE $variable"
Tu obtiens la même chose donc ca marchera pareil. La variable est remplacer par son contenu par PHP avant d'être transmis à MySQL. Il n'est pas fait un lien (bind) entre la variable et la commande SQL comme pour certain SGBD mais la constitution d'une chaine de caractère.
Il faut en plus utiliser la fonction mysql_real_escape_string() pour se protéger du contenu de la variable $tata.
Imagine le traitement :
$tata = 'T\' or \'A\' = \'A'; // ta variable contient T' or 'A' = 'A
$variable = "toto = '$tata'"; // ta variable contient toto = 'T' or 'A' = 'A'
Si tu fais SELECT .... FROM .... WHERE toto='$tata' ou SELECT .... FROM .... WHERE $variable tu auras des surprises
D'ou l'utilisation de $tata = mysql_real_escape_string($tata) pour sécuriser l'ordre SQL avec l'utilisation de $tata dans $variable ou dans l'ordre SQL.
Tout ca pour dire que ta méthode marche bien mais qu'il faut se méfier du contenu de $tata au cas ou $tata provienne d'une saisie et que l'utilisateur essaye de trafiquer la requête en saisissant du SQL.
Ta solution pour résoudre ton problème est bonne, le fait que la pose montre que tu n'avais pas très bien compris le principe de constitution de la commande SQL et les risques d'injection (j'étais dans ton cas)
Re: Variable utilisée dans where
Posté : 27 avr. 2011, 14:26
par chimonito
Merci pour la réponse très claire, mais cela ne marche pas
Car j'ai ça comme erreur :
Unknown column 'non' in 'where clause'
Merci
Re: Variable utilisée dans where
Posté : 27 avr. 2011, 14:29
par popy
Je te propose le suicide. Ou la démission, note.
Re: Variable utilisée dans where
Posté : 27 avr. 2011, 14:31
par chimonito
Non trop tôt je n'abandonne jamais