$randomvariable = ESACPE_MYSQL_STRING($_GET['randomvariable']);
$search =
"SELECT * FROM objects " .
(empty($randomvariable) ? "" : "WHERE transactiontype='$randomvariable' ") .
"ORDER BY id DESC";
ここで、 ESCAPE_MYSQL_STRING
は、使用しているMySQLドライバーの文字列をエスケープするための関連関数です。
もう1つの、よりモジュール化された方法:
$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