Mysql
 sql >> Database >  >> RDS >> Mysql

Clausola WHERE creata dinamicamente PHP/MySQL

Invece di creare una stringa where, creerei prima un array con parti 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

Quindi è facile sostituire ' OR ' con ' AND '

È facile consentire agli utenti di selezionare tra AND e OR per tutte le parti, ma non se si desidera farlo per ogni singolo articolo. Anche questo è un problema logico. Quando l'utente specifica a OR b AND c , vorrebbe (a OR b) AND c o a OR (b AND c) ?