Tom: zwei Fehler, setzen!

Beitrag lesen

Hello,

$where = array();
foreach($POST['ger'] as $key => $val)
  $where .= "ger".intval($key)." = 1";    ## hab ich noch nicht ausprobiert, aber hier

## würde ich selbst von PHP einen Fehler erwarten
    $where[] = "ger".intval($key)." = 1";   ## halte ich für besser

$sql = "select $fieldlist from $table where " . implode(' and ', $where);

Und wenn das Array leer war, weil gar kein Schalter gesetzt war, steht dann da:

$sql = "select $fieldlist from $table where ";

Das gibt dann einen fehler vom DBMS ;-)

Vor allem dann, wenn bei nicht numerischem $key das intval() eine 0 zurückliefert. Falls es eine Spalte ger0 gibt, ist das ein besonders hinterlistiger Fehler, der im Stillen arbeitet und "nur" zu einem falschen Abfrageergebnis führt.

eine der Grundregeln beim Datenbank-Programmieren ist, dass 0 beim Indizieren einen nicht gültigen Wert symbolisiert ;-) Jetzt frag bloß nicht, wo das steht. Das habe ich mir doch gerade erst ausgedacht...

Du hast Recht, darauf hätte ich ihn hinweisen müssen.

Harzliche Grüße vom Berg
http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau