Bonjour
Je suis en train de passer au crible toutes les requêtes sql d'un code que j'ai rédigé il y a un petit moment pour les transformer en requêtes préparées avec prepare et execute(array()). Cependant, j'avais rédigé une requête que je ne parviens pas à traduire proprement :
Ce que fait ce code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 $requete = ""; foreach ($_POST['perso'] as $key => $value) { $requete = $requete . 'clef=\'Personnage\' AND valeur=\''.$value.'\'' . " OR "; } $requete = $requete . "0=1"; $req = $bdd->query('SELECT * FROM options WHERE '.$requete.' ORDER BY sequence ASC');
- On récupère dans $_POST une liste de clé et de valeurs
- On veut récupérer toutes les ligne avec au moins une valeur
- Pour ça on fait une requête partielle avec les conditions, du type
Code : Sélectionner tout - Visualiser dans une fenêtre à part 'clef=\'Personnage\' AND valeur=\'valeur1'\' OR clef=\'Personnage\' AND valeur=\'valeur1\' ... OR'- On conclue par "0=1" pour échapper le dernier OR
- On envoie la requête
Le problème : on ne sait pas ce qu'il y a dans $_POST. En particulier, il peut y avoi des guillemets échappatoires et autres fantaisies de ce type. Je voudrais donc utiliser plutôt une requête préparé, mais je n'ai pas d'idée. Quelqu'un a t il déjà rencontré ce type de cas?
Merci beaucoup pour votre aide
Partager