$randomvariable = ESACPE_MYSQL_STRING($_GET['randomvariable']);
$search =
"SELECT * FROM objects " .
(empty($randomvariable) ? "" : "WHERE transactiontype='$randomvariable' ") .
"ORDER BY id DESC";
Wobei ESCAPE_MYSQL_STRING
ist die relevante Funktion zum Maskieren von Zeichenfolgen für den von Ihnen verwendeten MySQL-Treiber.
Ein anderer, modularerer Weg:
$search = array(
"select" => "SELECT * FROM objects",
"where" => "WHERE transactiontype='$randomvariable'",
"order" => "ORDER BY id DESC"
);
if (empty($randomvariable)) {
unset($search["where"]);
}
$search = implode(' ', $search);
Das Schöne daran ist, dass Sie die Abfrage für jede Situation einfach hinzufügen, entfernen oder ändern können und einfachen Zugriff auf jeden Teil der Abfrage haben.
Sie könnten dies auch mit CASE()
in SQL, aber es ist etwas umständlich und Sie sollten auch keine gute Leistung erwarten:
SELECT * FROM objects
WHERE transactiontype LIKE
CASE WHEN '$randomvariable' = '' THEN
'%'
ELSE
'$randomvariable'
END CASE
ORDER BY id DESC