$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