Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Dynamicznie tworzona klauzula WHERE PHP/MySQL

Zamiast tworzyć ciąg znaków where, najpierw utworzyłbym tablicę z częściami 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

Wtedy łatwo jest zastąpić ' OR ' z ' AND '

Możesz łatwo pozwolić użytkownikom na wybór między AND i OR dla wszystkich części, ale nie, jeśli chcesz to zrobić dla każdego elementu z osobna. To także kwestia logiczna. Gdy użytkownik określi a OR b AND c , czy chciałby (a OR b) AND c lub 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. mysql konwertuje wiele wierszy na kolumny w jednym wierszu

  2. Podziel ciąg MYSQL z GROUP_CONCAT na (tablicę, np. wyrażenie, listę), którą IN() może zrozumieć

  3. Brak mysql.sock; otrzymując OperationalError:(2002, Nie można połączyć się z lokalnym serwerem MySQL przez gniazdo '/tmp/mysql.sock' (2))

  4. Problem w PHP podczas łączenia tabel zawierających kolumny o tej samej nazwie

  5. jaka jest różnica między GROUP BY i ORDER BY w sql