Variable utilisée dans where

Chimonito
Invité n'ayant pas de compte PHPfrance

09 avr. 2011, 16:41

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

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

09 avr. 2011, 16:49

salut,

si $variable contient la toto='valeur de tata' oui surement après faut voir comment est crée la chaine contenant cette requete.


@+
Il en faut peu pour être heureux ......

chimonito
Invité n'ayant pas de compte PHPfrance

09 avr. 2011, 19:08

Non pas exactement
$variable = ( toto='$tata')

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

09 avr. 2011, 19:18

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 ;)


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 101 Messages

09 avr. 2011, 19:21

$tata = "'bla'";
$variable = "toto = $tata";
?

chimonito
Invité n'ayant pas de compte PHPfrance

26 avr. 2011, 19:12

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

ViPHP
ViPHP | 2577 Messages

26 avr. 2011, 20:22

Bonjour,

Tu peux constituer la commande SQL comme tu veux. Temps que le contenu est du SQL correcte, pas de problème

chimonito
Invité n'ayant pas de compte PHPfrance

26 avr. 2011, 21:56

Comprends pas

ViPHP
ViPHP | 2577 Messages

27 avr. 2011, 08:23

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);

chimonito
Invité n'ayant pas de compte PHPfrance

27 avr. 2011, 09:26

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

ViPHP
xTG
ViPHP | 7331 Messages

27 avr. 2011, 10:03

Oui c'est possible. :)

ViPHP
ViPHP | 2577 Messages

27 avr. 2011, 10:58

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)

chimonito
Invité n'ayant pas de compte PHPfrance

27 avr. 2011, 14:26

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

Eléphant du PHP | 275 Messages

27 avr. 2011, 14:29

Je te propose le suicide. Ou la démission, note.

chimonito
Invité n'ayant pas de compte PHPfrance

27 avr. 2011, 14:31

Non trop tôt je n'abandonne jamais