Hvad angår sql-injektionen, ville jeg skifte til PDO ved hjælp af en forberedt erklæring .
Du kan bruge en simpel is_array() på dine værdier for at tjekke for et array og derefter gå igennem det. Du har ret, som det er, dit filter funktion vil ikke håndtere arrays korrekt.
Rediger: Hvis du bruger PDO og en forberedt erklæring, behøver du ikke mysql_real_escape_string længere. strip_tags , htmlentities og trim er heller ikke nødvendige for at gemme oplysningerne sikkert i en database, de er nødvendige, når du udsender information til browseren (trim ikke selvfølgelig...), selvom htmlspecialchars ville være tilstrækkeligt til det. Det er altid bedre at forberede din information/output korrekt til det medie, du udsender til på det tidspunkt.