Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Cláusula WHERE criada dinamicamente PHP/MySQL


Em vez de criar uma string where, eu primeiro criaria uma matriz com as partes 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

Então é fácil substituir ' OR ' com ' AND '

É fácil permitir que os usuários selecionem entre E e OU para todas as partes, mas não se você quiser fazer isso para cada item individual. Isso também é uma questão de lógica. Quando o usuário especifica a OR b AND c , ele gostaria de (a OR b) AND c ou a OR (b AND c) ?