Ifølge Stefan Esser, "mysql_real_escape_string()
[er] ikke sikker, når SET NAMES
bruges."
Hans forklaring, fra hans blog :
SET NAMES bruges normalt til at skifte kodningen fra det, der er standard til det, applikationen har brug for. Dette gøres på en måde, som mysql_real_escape_string
kender ikke til dette. Det betyder, at hvis du skifter til en multibyte-kodning, der tillader omvendt skråstreg som 2. 3. 4.... byte, løber du ind i problemer, fordi mysql_real_escape_string
undslipper ikke korrekt. UTF-8 er sikker...
Sikker måde at ændre kodning på er mysql_set_charset
, men det er kun tilgængeligt i nye PHP-versioner
Han nævner dog, at UTF-8 er sikkert.