Bonjour
Je viens vers vous avec une petite question concernant une requête qui me pose problème, celle-ci fonctionne correctement, mais n'est pas assez sélective à mon goût. En effet, je souhaiterais que toutes les conditions soient "vraies" et non pas une seule d'entres-elles. Le IN permet de vérifier que telle OU telle condition est bien remplie, mais je voudrais que telle ET telle condition soient remplies… Je ne sais pas si je suis très claire dans mes explications ^^'
Un extrait de code devrait vous aider à comprendre ce que je souhaite faire :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php $categories = $_POST['filterOpts']; $categories = implode(', ', $categories); $pdo = new PDO('mysql:host=localhost;dbname=dbname', 'root', 'root'); $select = 'SELECT DISTINCT employees.nom,employees.prenom'; $from = ' FROM employe'; $where = " LEFT JOIN employees_categories AS ec ON employees.id = ec.employe_id WHERE ec.categories_id IN ($categories) "; $sql = $select . $from . $where; $statement = $pdo->prepare($sql); $statement->execute(); $results = $statement->fetchAll(PDO::FETCH_ASSOC); $json = json_encode($results); echo($json); ?> |
Le problème concerne le IN à la ligne 7, idéalement, si mes categories n'étaient pas contenues dans des variables, je pourrais faire des tests grâce à des &&, mais je ne vois pas comment faire… Peut-être avec un foreach ? Mais ça ne me semble pas être la meilleure solution…
Quelqu'un pourrait me guider vers la meilleure méthode à employer dans ce genre de situation ?
Merci d'avance !