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 :
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');
Ce que fait ce code :
  • 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