sql >> Base de Datos >  >> RDS >> Mysql

Cláusula WHERE creada dinámicamente PHP/MySQL

En lugar de crear una cadena where, primero crearía una matriz con 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

Entonces es fácil reemplazar ' OR ' con ' AND '

Es fácil permitir que los usuarios seleccionen entre AND y OR para todas las partes, pero no si desea hacerlo para cada elemento individual. Eso también es un problema de lógica. Cuando el usuario especifica a OR b AND c , querría (a OR b) AND c o a OR (b AND c) ?