Enligt Stefan Esser, "mysql_real_escape_string() [är] inte säker när SET NAMES används."
Hans förklaring, från hans blogg :
SET NAMES används vanligtvis för att byta kodning från vad som är standard till vad applikationen behöver. Detta görs på ett sätt som
mysql_real_escape_stringvet inte om detta. Det betyder att om du byter till någon multibyte-kodning som tillåter snedstreck som 2nd 3rd 4th... byte får du problem, eftersommysql_real_escape_stringkommer inte ut korrekt. UTF-8 är säkert...Säkert sätt att ändra kodning är
mysql_set_charset, men det är bara tillgängligt i nya PHP-versioner
Han nämner dock att UTF-8 är säkert.