dedlfix: PHP/ MySQL Select mit IF/ CASE

Beitrag lesen

Hi!

Habe eigentlich dass gemeint:
IF($_POST...){ Select ... etwas}
else { select ... etwas anderes}

Aber eben, dass ist halt nicht so elegant.

Eine Fallunterscheidung bekommst du mit der IF()-Funktion unter MySQL hin

... WHERE feld = IF(Leer-Vergleich, dies, jenes)

Das bedeutet aber, dass MySQL vielleicht keinen Index für die Spalte verwenden kann, weil es jedes Mal den Ausdruck ausrechnet. Wenn du das mit PHP machst, muss dieses genau einmal den Fall prüfen und MySQL bekommt ein fertiges Statement, ohne selbst rechnen zu müssen.

$sql = sprintf("SELECT * FROM table WHERE feld = '%s'",
                 mysql_real_escape_string(empty($_POST['feld']) ? 'wasanderes' : $_POST['feld']));

Lo!