Hallo,
ja, ich vermute (!) du liegst da falsch.
insert into tab (vorname, name) values ('$HTTP_POST_VARS[vorname]', '$HTTP_POST_VARS[name]');
Meine Ansicht nach sieht die Abfrage ja dann bei leeren Eingaben so aus:
insert into tab (vorname, name) values ('', '');
Das was hier steht, sind aber nicht NULL-Werte sondern leere Strings - Ein NULL-Wert wäre es, wenn das Feld nicht angesproche würde oder dort NULL stünde...