Mysql
 sql >> Base de données >  >> RDS >> Mysql

Clause WHERE créée dynamiquement PHP/MySQL

Au lieu de créer une chaîne where, je créerais d'abord un tableau avec des parties where.

$whereParts = array();
foreach($aColumns as $i => $column)
{
    <logic goes here>
    $whereParts[] = 'genre_id IN (1,3,5,6)'; // sample :)
}

$where = 'WHERE ' . implode(' OR ', $whereParts); // note the spaces around OR

Ensuite, il est facile de remplacer ' OR ' avec ' AND '

Il est facile de permettre aux utilisateurs de choisir entre ET et OU pour toutes les pièces où, mais pas si vous voulez le faire pour chaque élément individuel. C'est aussi une question de logique. Lorsque l'utilisateur spécifie a OR b AND c , voudrait-il (a OR b) AND c ou a OR (b AND c) ?