Не можете да свържете "NOT NULL". Можете да обвързвате само стойности . „IS NOT NULL“ не е стойност, това е напълно различен синтаксис на заявката. Просто ще трябва динамично да изградите вашата заявка, обвързването на стойност не може да ви помогне с това:
$query = 'SELECT ... WHERE ';
if (/* condition is NOT NULL */) {
$query .= 'foo IS NOT NULL';
$stmt = $db->prepare($query);
} else {
$query .= 'foo = :foo';
$stmt = $db->prepare($query);
$stmt->bindValue('foo', $foo);
}
$stmt->execute();