philip.p: DB-Abfrage: WHERE mit mehreren optionalen Parametern

Beitrag lesen

Hi,

wenn ich eine DB-Abfrage mache und die Ausgabe auf bestimmte Felder beschränken möchte, mache ich das ja mittels WHERE.

sprintf("SELECT feld_x FROM table WHERE feld_x = '%s' AND feld_y = '%s'") ... ;

Wie mache ich das aber nun, wenn ich je nach Auswahl des Benutzers (per Formular) verschiedene Felder wählen will? D.h. der eine Benutzer will Daten von feld_x, der andere von feld_x und feld_y, ein dritter nur von feld_y usw. Dann muss ich ja individuell bei WHERE die Felder aufführen.

Wie funktioniert das?

Ich kann ja kaum mittels if prüfen, ob feld_x oder feld_y oder feld_x und feld_y gewählt wurden, und je nachdem unterschiedliche Select-Abfragen durchführen.

Also sowas:

  if($_POST['feld_x'] == "ok" && $_POST['feld_y'] != "ok")  
  {  
    "SELECT feld_x FROM table WHERE feld_x = '%s'";  
  }  
  elseif($_POST['feld_x'] != "ok" && $_POST['feld_y'] == "ok")  
  {  
    "SELECT feld_x FROM table WHERE feld_y = '%s'";  
  }  
  elseif($_POST['feld_x'] == "ok" && $_POST['feld_y'] == "ok")  
  {  
    "SELECT feld_x FROM table WHERE feld_x = '%s' AND feld_y = '%s'";  
  }

Bei zwei Feldern mag das ja noch gehen - aber bei mehreren wird das doch arg lang und unübersichtlich. Da gibts ja immer 2^Feldanzahl Optionen.