Menurut Stefan Esser, "mysql_real_escape_string() [adalah] tidak aman ketika SET NAMES digunakan."
Penjelasannya, dari blognya :
SET NAMES biasanya digunakan untuk mengganti encoding dari default ke apa yang dibutuhkan aplikasi. Hal ini dilakukan dengan cara
mysql_real_escape_stringtidak tahu tentang ini. Ini berarti jika Anda beralih ke beberapa pengkodean multi byte yang memungkinkan garis miring terbalik sebagai 2nd 3rd 4th… byte Anda mengalami masalah, karenamysql_real_escape_stringtidak lolos dengan benar. UTF-8 aman…Cara aman untuk mengubah encoding adalah
mysql_set_charset, tapi itu hanya tersedia dalam versi PHP baru
Namun, dia menyebutkan bahwa UTF-8 aman.