> Можно это как-то реализовать средствами MySQL, не убирая переменную из строки SQL запроса?
Нет.
По-любому строку запроса модифицировать придется.
Другое дело, что совсем не обязательно это делать руками.
Если пользоваться хотя бы минимально интеллектуальными средствами для работы с БД, а не шарашить по-старинке пещерными методами из прошлого века, то такая проблема попросту не возникает. К примеру, любой ОРМ решает ее по умолчанию.
Если никак не получается расстаться с SQL, то
safemysql подойдет лучше всего.
$data = array_filter($data); // уберём пустые поля нафиг
$db->query("INSERT INTO ?n SET ?u", $table, $data);
Для остальных либ принцип тот же, но придется повозиться с передачей переменного числа параметров