Isso porque PHP
null
é convertido na string vazia "" quando você cria a string de consulta. $variable = null;
$insert = "insert into mytable set mycolumn = $variable" ;
echo $insert;
Vai produzir:
insert into mytable set mycolumn =
Para corrigir sua consulta, você precisa verificar se a variável PHP é nula e alterá-la para string NULL. (Também agora mencionado no comentário de @MarkB.)
if ($variable == null){
$variable = "NULL";
}
Isso produzirá:
"insert into mytable set mycolumn = NULL"
Observe que NULL não tem " em torno dele porque agora está concatenado com a outra string.
*(nota:
insert into tablename set ..
não está correto, você também insert
data ou você update tablename set
dados.)