Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Ketika klausa mysql WHERE kosong, kembalikan semua baris

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

Di mana ESCAPE_MYSQL_STRING adalah fungsi yang relevan untuk keluar dari string untuk driver MySQL apa pun yang Anda gunakan.

Cara lain yang lebih modular:

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

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

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

Hal yang menyenangkan tentang ini adalah Anda dapat menambahkan, menghapus, atau mengubah kueri untuk situasi apa pun dengan mudah, memiliki akses mudah ke bagian kueri mana pun.

Anda juga dapat melakukannya dengan CASE() dalam SQL, tetapi agak rumit dan Anda juga tidak boleh mengharapkan kinerja yang baik:

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. Laravel :Bagaimana cara mengambil n (nomor apa saja) baris terakhir setelah dipesan dalam urutan menaik?

  2. Akses ditolak untuk root pengguna - mysql di MAC OS

  3. mysql:mengatasi komitmen transaksi implisit?

  4. Masalah mengakses MySQL dari Java

  5. Ambil catatan dari satu tabel di mana tidak ada catatan di meja lain