$randomvariable = ESACPE_MYSQL_STRING($_GET['randomvariable']);
$search =
"SELECT * FROM objects " .
(empty($randomvariable) ? "" : "WHERE transactiontype='$randomvariable' ") .
"ORDER BY id DESC";
Där ESCAPE_MYSQL_STRING
är den relevanta funktionen för att escape-strängar för vilken MySQL-drivrutin du än använder.
Ett annat, mer modulärt sätt:
$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 fina med detta är att du enkelt kan lägga till, ta bort eller ändra frågan för alla situationer, och ha enkel åtkomst till vilken del av frågan som helst.
Du kan också göra detta med CASE()
i SQL, men det är lite besvärligt och du bör inte förvänta dig bra prestanda heller:
SELECT * FROM objects
WHERE transactiontype LIKE
CASE WHEN '$randomvariable' = '' THEN
'%'
ELSE
'$randomvariable'
END CASE
ORDER BY id DESC