[RESOLU] Insérer une variable $critère dans un énoncé SELECT

Eléphanteau du PHP | 10 Messages

06 févr. 2011, 21:41

Bonjour à vous,

Étant nouveau et me rendant compte que je me complique probablement les choses, j'aimerais vous poser la question suivante:

Est-ce possible d'insérer une variable $critère dans un énoncé MySQL de la façon suivante:

1) Dans la définition de mes variables, j'en ai créé une comme suit: $critere="resultats.$categorie._a";
a) la variable catégorie est déterminée par le POST d'un bouton radio choisi par l'usager
2) Dans la base de donnée, j'ai une table s'appelant "resultats_atome_a", une autre appelée "resultats_moustique_a" etc.
3) L'énoncé MySQL que j'aimerais créer serait du type:

$sql_get_data="SELECT * FROM $critere ORDER BY points DESC";

Est-ce possible? Y a t-il une façon plus simple?

Merci de me lire!

Marc

devlop78
Invité n'ayant pas de compte PHPfrance

07 févr. 2011, 01:19

Tout est possible tout est réalisable. Cependant, attention à toujours "valider", "filtrer" ou "convertir" les données utilisateurs (en général même).

Ainsi :

select * from matable where id=$_POST['id'], données à convertir
select $_POST['champ'] from matable, données à valider ou à filtrer (pour vérifier qu'il répond à un masque)

Mais sinon, tout est possible ...

devlop78
Invité n'ayant pas de compte PHPfrance

07 févr. 2011, 01:23

D'ailleurs, la concaténation se s'applique pas dans une chaine de caractère :

"resultats.$categorie._a";

Tu peux faire

"resultats_${categorie}_a";

bien sûr en ayant vérifié par exemple preg_match("/^[a-z0-9]+$/i",$categorie); ou filtré preg_replace ("/[^a-z0-9]/i",$categorie)