Mysql
 sql >> база данни >  >> RDS >> Mysql

Динамично създадена WHERE клауза PHP/MySQL

Вместо да създавам низ where, първо бих създал масив с части 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

Тогава е лесно да замените ' OR ' с ' AND '

Лесно е да позволите на потребителите да избират между И и ИЛИ за всички части, но не и ако искате да направите това за всеки отделен елемент. Това също е логически проблем. Когато потребителят посочи a OR b AND c , дали иска (a OR b) AND c или a OR (b AND c) ?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Може ли създаването на индекс да използва съществуващи индекси?

  2. codeigniter база данни се премества към друга таблица

  3. Как да използвам Mysql променливи с Hibernate?

  4. Грешка във връзката с MediaWiki DB при опит за надграждане до 1.22

  5. MYSQL ГРЕШКА 2049 (HY000):Връзка, използваща стар (преди 4.1.1) протокол за удостоверяване, използван (използва се клиентска опция 'secure_auth')