Що се отнася до sql инжекцията, бих превключил към PDO с помощта на подготвена декларация .
Можете да използвате прост is_array() върху вашите стойности, за да проверите за масив и след това да го прегледате. Прав си, както е, твоят filter функцията няма да обработва масивите правилно.
Редактиране: Ако използвате PDO и подготвено изявление, нямате нужда от mysql_real_escape_string вече. strip_tags , htmlentities и trim също не са необходими за безопасно съхраняване на информацията в база данни, те са необходими, когато извеждате информация в браузъра (trim не разбира се...), въпреки че htmlspecialchars би било достатъчно за това. Винаги е по-добре да подготвите информацията/изхода си правилно за носителя, към който изпращате в този момент.