Linuchs: Feld auf NULL setzen wirkt wie unset

Beitrag lesen

Moin,

in der Datenbank habe ich Felder, die NULL sein können. Wenn so ein Feld aus der Form kommt, ist es leer, aber sehr wohl gesetzt (isset).

Damit es in der Datenbank zu NULL wird, setze ich es beim Dateneingang auf NULL:

$row = [
 'uhr_bis' =>( $_POST['uhr_bis'] ) ? hm2h_m( trim( $_POST['uhr_bis'] )) : NULL
...
];

Beim Update durchlaufe ich alle Felder $col der Tabelle und ändere sie nur, wenn dieses Feld in $_POST und in $row vorkommt. Sinn: Ich kann dieselbe UPDATE-Routine in verschiedenen forms verwenden, die unterschiedliche Felder behandeln.

if ( isset ( $_POST[ $col['Field'] ] )
&& isset( $row[ $col['Field'] ] )
&& $col['Field'] != "id" ) {
  $q .= "," . $col['Field']
  . substr( $leer, 0, (25 - strlen( $col['Field'] )))
  . " = "
  . (( is_null ( $row[ $col['Field'] ] )) ? 'NULL' : "'"
  .  addslashes( $row[ $col['Field'] ] ) . "'" ) . "\n";
}

Nun kann ich ein Feld deshalb nicht auf NULL löschen, weil das isset durch den Wert NULL zurückgenommen wurde.

Dafür ist aber das Kommando unset vorgesehen. Ist das ein Bug von PHP?

Gruß, Linuchs