Eso es porque PHP null
se convierte en la cadena vacía "" cuando crea la cadena de consulta.
$variable = null;
$insert = "insert into mytable set mycolumn = $variable" ;
echo $insert;
Producirá:
insert into mytable set mycolumn =
Para corregir su consulta, debe verificar si la variable PHP es nula y cambiarla a la cadena NULL. (También ahora mencionado en el comentario de @MarkB.)
if ($variable == null){
$variable = "NULL";
}
Esto producirá:
"insert into mytable set mycolumn = NULL"
Tenga en cuenta que NULL no tiene " alrededor porque ahora está concatenado con la otra cadena.
*(nota:insert into tablename set ..
no es correcto, usted insert
datos o usted update tablename set
datos.)