sql >> Database >  >> RDS >> Mysql

Dynamisch gecreëerde WHERE-clausule PHP/MySQL

In plaats van een waar-tekenreeks te maken, zou ik eerst een array maken met waar-onderdelen.

$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

Dan is het eenvoudig om ' OR ' . te vervangen met ' AND '

Het is gemakkelijk om gebruikers te laten kiezen tussen EN en OF voor alle onderdelen, maar niet als u dat voor elk afzonderlijk item wilt doen. Dat is ook een logische kwestie. Wanneer de gebruiker a OR b AND c . opgeeft , zou hij (a OR b) AND c . willen of a OR (b AND c) ?




  1. Array - Voeg matrixwaarden toe aan de mysql-tabel

  2. MySQL-gegevensbestand laden

  3. Hoe SQL Server op Red Hat 8 te installeren

  4. SQL Server-subquery heeft meer dan 1 waarde geretourneerd. Dit is niet toegestaan ​​als de subquery volgt =, !=, <, <=,>,>=