Il est possible de lier une vraie valeur NULL aux instructions préparées (lire ceci ).
Vous pouvez, en fait, utiliser mysqli_bind_parameter pour passer une valeur NULL à la base de données. créez simplement une variable et stockez la valeur NULL (voir la page de manuel pour cela) à la variable et liez-la. Ça marche très bien pour moi en tout cas.
Ainsi, il devra être quelque chose comme :
<?php
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world');
// person is some object you have defined earlier
$name = $person->name();
$age = $person->age();
$nickname = ($person->nickname() != '') ? $person->nickname() : NULL;
// prepare the statement
$stmt = $mysqli->prepare("INSERT INTO Name, Age, Nickname VALUES (?, ?, ?)");
$stmt->bind_param('sis', $name, $age, $nickname);
?>
Cela devrait insérer une valeur NULL dans la base de données.