Zamiast tworzyć ciąg znaków where, najpierw utworzyłbym tablicę z częściami 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
Wtedy łatwo jest zastąpić ' OR '
z ' AND '
Możesz łatwo pozwolić użytkownikom na wybór między AND i OR dla wszystkich części, ale nie, jeśli chcesz to zrobić dla każdego elementu z osobna. To także kwestia logiczna. Gdy użytkownik określi a OR b AND c
, czy chciałby (a OR b) AND c
lub a OR (b AND c)
?