NULL y 0 (MySQL)

Hola amig@s, necesito una ayuda... desde PHP estoy programando consultas de actualización y cuando en un campo fecha paso NULL la consulta escribe en la tabla 0000-00-00
Igual me pasa cuando en un campo numérico paso NULL, la consulta escribe 0.

Necesito que se ponga NULL y no ceros, ¿cómo lo hago?

Gracias por adelantado
Hola:

En la base de datos, debes especificar que se ponga lo que quieras en lugar de NULL. Por ejemplo:

CREATE TABLE usuario (
  usuario_id INT(12) NOT NULL AUTO_INCREMENT PRIMARY KEY,
  nombre VARCHAR(100) NOT NULL,
  edad SMALLINT(3) NOT NULL [COLOR="#FF0000"]DEFAULT 0[/COLOR],
  titulo VARCHAR(50) NOT NULL [COLOR="#FF0000"]DEFAULT 'Sin título'[/COLOR]
);
Skaparate, gracias una vez más..
Las tablas ya están creadas, la base de datos se creó a partir de una migración de base de datos access...
¿se puede hacer esto que me dices con las tablas creadas? ¿puede ser con phpmyadmin?

Gracias
Así:

if($_POST['FechaCompra']=="") {
  $fo2= 'NULL'; // NULL entre comillas (simples o dobles)
}

$updatesql = "update TABLA1 set FechaCompra=$fo2 where Referencia='$r'"; // Este no va entre comillas

Ahora, esto conlleva un problema: ¿Qué pasará cuando el usuario sí ingrese la fecha de compra? En ese caso, es necesario que la asignación de la fecha sí vaya entre comillas:

if($_POST['FechaCompra']=="") {
  $fo2= 'NULL'; // NULL entre comillas (simples o dobles)
} else {
  $fo2 = $_POST['FechaCompra'];
}

"UPDATE TABLA1 SET FechaCompra = '$fo2' WHERE Referencia = '$r'"; // Este sí debe ir entre comillas

Podrías crear dos consultas, pero no es lo ideal. Sería mejor comparar la fecha contra 0000-00-00 en lugar de NULL. Además, deberías validar que la fecha sea válida, pues el usuario podría ingresar un fecha inadecuada (1920-02-02, por ejemplo, donde el usuario tendría 93 años y habría comprado el producto a los pocos meses/años de vida XD).