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_string
tidak 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_string
tidak 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.