De acordo com Stefan Esser, "
mysql_real_escape_string()
[é] não seguro quando SET NAMES
é usado." Sua explicação, de seu blog :
SET NAMES é geralmente usado para mudar a codificação do que é padrão para o que o aplicativo precisa. Isso é feito de uma forma quemysql_real_escape_string
não sabe disso. Isso significa que se você mudar para alguma codificação multi byte que permita a barra invertida como 2º 3º 4º byte, você terá problemas, porquemysql_real_escape_string
não escapa corretamente. UTF-8 é seguro…
A maneira segura de alterar a codificação émysql_set_charset
, mas isso só está disponível em novas versões do PHP
Ele menciona que o UTF-8 é seguro, no entanto.