Volgens Stefan Esser, "mysql_real_escape_string() [is] niet veilig wanneer SET NAMES wordt gebruikt."
Zijn uitleg, van zijn blog :
NAMEN INSTELLEN wordt meestal gebruikt om de codering om te schakelen van wat standaard is naar wat de toepassing nodig heeft. Dit wordt gedaan op een manier die
mysql_real_escape_stringweet hier niets van. Dit betekent dat als je overschakelt naar een multi-byte-codering die backslash als 2e 3e 4e ... byte toestaat, je in de problemen komt, omdatmysql_real_escape_stringontsnapt niet correct. UTF-8 is veilig...Een veilige manier om de codering te wijzigen is
mysql_set_charset, maar dat is alleen beschikbaar in nieuwe PHP-versies
Hij vermeldt wel dat UTF-8 veilig is.