$randomvariable = ESACPE_MYSQL_STRING($_GET['randomvariable']);
$search =
"SELECT * FROM objects " .
(empty($randomvariable) ? "" : "WHERE transactiontype='$randomvariable' ") .
"ORDER BY id DESC";
Ở đâu ESCAPE_MYSQL_STRING
là hàm liên quan để thoát chuỗi cho bất kỳ trình điều khiển MySQL nào bạn đang sử dụng.
Một cách khác, mô-đun hơn:
$search = array(
"select" => "SELECT * FROM objects",
"where" => "WHERE transactiontype='$randomvariable'",
"order" => "ORDER BY id DESC"
);
if (empty($randomvariable)) {
unset($search["where"]);
}
$search = implode(' ', $search);
Điều thú vị về điều này là bạn có thể thêm, xóa hoặc thay đổi truy vấn cho bất kỳ trường hợp nào một cách dễ dàng, dễ dàng truy cập vào bất kỳ phần nào của truy vấn.
Bạn cũng có thể thực hiện việc này với CASE()
trong SQL, nhưng nó hơi cồng kềnh và bạn cũng không nên mong đợi hiệu suất tốt:
SELECT * FROM objects
WHERE transactiontype LIKE
CASE WHEN '$randomvariable' = '' THEN
'%'
ELSE
'$randomvariable'
END CASE
ORDER BY id DESC