Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Dynamisch erstellte WHERE-Klausel PHP/MySQL

Anstatt einen Where-String zu erstellen, würde ich zuerst ein Array mit Where-Teilen erstellen.

$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

Dann ist es einfach, ' OR ' zu ersetzen mit ' AND '

Es ist einfach, Benutzern zu erlauben, zwischen AND und OR für alle where-Teile zu wählen, aber nicht, wenn Sie dies für jedes einzelne Element tun möchten. Das ist auch ein Logikproblem. Wenn der Benutzer a OR b AND c angibt , würde er (a OR b) AND c wollen oder a OR (b AND c) ?