$randomvariable = ESACPE_MYSQL_STRING($_GET['randomvariable']);
$search =
"SELECT * FROM objects " .
(empty($randomvariable) ? "" : "WHERE transactiontype='$randomvariable' ") .
"ORDER BY id DESC";
Hvor ESCAPE_MYSQL_STRING
er den relevante funktion til at undslippe strenge for den MySQL-driver du bruger.
En anden, mere modulær måde:
$search = array(
"select" => "SELECT * FROM objects",
"where" => "WHERE transactiontype='$randomvariable'",
"order" => "ORDER BY id DESC"
);
if (empty($randomvariable)) {
unset($search["where"]);
}
$search = implode(' ', $search);
Det gode ved dette er, at du nemt kan tilføje, fjerne eller ændre forespørgslen til enhver situation, idet du har nem adgang til enhver del af forespørgslen.
Du kan også gøre dette med CASE()
i SQL, men det er noget besværligt, og du skal heller ikke forvente god ydeevne:
SELECT * FROM objects
WHERE transactiontype LIKE
CASE WHEN '$randomvariable' = '' THEN
'%'
ELSE
'$randomvariable'
END CASE
ORDER BY id DESC