al parecer hay un problema con las comillas aqui
Código PHP:
VALUES ('$nom', '$ape')
cuando el valor es null lo coloca como 'null' y mysql lo trata como texto y en realidad no debe ser así, para que null sea tratado como nulo se debe de colocar sin comillas.
prueba con esto
Código PHP:
$nom=(empty($_POST['nom']))?'NULL':'\''.$_POST['nom'].'\'';
$ape=(empty($_POST['ape']))?'NULL':'\''.$_POST['ape'].'\'';
$mysql=sprintf("INSERT INTO nombre (`nombre`,`apellidos`) VALUES (%s, %s)",$nom,$ape);
aunque veas que 'NULL' esta colocado entre comillas no te preocupes al pasar por el sprintf se las quita.
suerte y saludos.