Ho più o meno lo stesso problema:

if ($valore == '') $valore = 'NULL';
$query_mod = 'UPDATE Tabella SET (campo = ' . $valore . ') WHERE (id = \'' . $id . '\')';
if (!(mysql_query($query_mod, $db)))
echo 'query_mod ERRATA: ' . $query_mod . '
';

Il risultato è:

query_mod ERRATA: UPDATE Tabella SET (campo = NULL) WHERE (id = '5')

E OVVIAMENTE NON VIENE ATTRIBUITO NEL RECORD AL CAMPO "CAMPO" IL VALORE NULL