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

Когато клаузата WHERE на mysql е празна, върнете всички редове

$randomvariable = ESACPE_MYSQL_STRING($_GET['randomvariable']);
$search =
    "SELECT * FROM objects " .
    (empty($randomvariable) ? "" : "WHERE transactiontype='$randomvariable' ") .
    "ORDER BY id DESC";

Където ESCAPE_MYSQL_STRING е съответната функция за избягване на низове за какъвто и MySQL драйвер, който използвате.

Друг, по-модулен начин:

$search = array(
    "select" => "SELECT * FROM objects",
    "where" => "WHERE transactiontype='$randomvariable'",
    "order" => "ORDER BY id DESC"
);

if (empty($randomvariable)) {
    unset($search["where"]);
}

$search = implode(' ', $search);

Хубавото в това е, че можете лесно да добавяте, премахвате или променяте заявката за всяка ситуация, като имате лесен достъп до всяка част от заявката.

Можете също да направите това с CASE() в SQL, но е малко тромаво и не трябва да очаквате добра производителност:

SELECT * FROM objects
WHERE transactiontype LIKE
    CASE WHEN '$randomvariable' = '' THEN
        '%'
    ELSE
        '$randomvariable'
    END CASE
ORDER BY id DESC


  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. Интеграция на WordPress MediaWiki

  3. Комбиниране на условие от две колони mysql

  4. Как да получа идентификатора на редове, които имат MAX и MIN стойности в SQL

  5. Now() срещу GetDate()