Matti Maekitalo: PHP/ MySQL Select mit IF/ CASE

Beitrag lesen

Tach auch.

Mein Problem ist, dass die $_POST Variable manchmal leer ist, ist dies der Fall funktioniert die Abfrage nicht mehr. Habe ich eine Möglichkeit, die Abfrage so zu verändern, dass die where Funktion nur dan verwendet wird wenn die $_POST Variable einen Wert enthält?

$sql = "SELECT * FROM blog where thema ='" . $_POST['etwas'] . "'";

  
Ich verwende überlicherweise sowas:  
  
~~~php
  
$filter = isset($_POST['etwas']) ? "WHERE thema = '" . $dbh->escape_string($_POST['etwas']) . "'" : '';  
$sql = "SELECT * FROM blog $filter";  

Mit einer Anweisung wäre z.B. folgendes möglich:

  
$var = ""; // Hinweise zum Kontextwechsel wurden bereits gegeben!  
$sql = "SELECT * FROM blog WHERE IF (LENGTH('$var') = 0, 1, thema = '$var')";  

Idee: wenn im Query der String '$var' (Hinweise zum Kontext!) leer ist, dann gibt das IF-Statement immer Wahr zurück.
Ich finde das aber weder schöner zu lesen als das "dynamische SQL" in meinem ersten Beispiel noch ist es schneller (da die Datenbank für jede Ergebniszeile das IF-Statement prüft).

Bis die Tage,
Matti