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_string
vet 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_string
kommer 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.