Depuis que cette question a été écrite, mysql a introduit un opérateur de vaisseau spatial qui nous permet d'utiliser une requête régulière pour faire correspondre une valeur nulle
WHERE fieldName <=> :fieldName;
correspondra à la fois à un null
ou toute valeur non nulle.
Alors écrivez simplement votre requête tout de suite et exécutez-la comme d'habitude
$stmt = $db->prepare('SELECT field FROM table WHERE fieldName <=> :fieldName;');
$stmt->execute(['fieldName' => null]);
$result = $stmt->fetchAll(); // whatever fetch method is suitable
Et avec les requêtes construites dynamiquement, c'est la même chose.