Podle Stefana Essera "mysql_real_escape_string()
[is] není bezpečné, když SET NAMES
se používá."
Jeho vysvětlení, z jeho blogu :
SET NAMES se obvykle používá k přepnutí kódování z výchozího na to, co aplikace potřebuje. To se děje způsobem, že
mysql_real_escape_string
o tomhle neví. To znamená, že pokud přejdete na nějaké vícebajtové kódování, které umožňuje zpětné lomítko jako 2. 3. 4.… bajt, dostanete se do problémů, protožemysql_real_escape_string
neuniká správně. UTF-8 je bezpečné…Bezpečným způsobem změny kódování je
mysql_set_charset
, ale to je k dispozici pouze v nových verzích PHP
Zmiňuje však, že UTF-8 je bezpečné.