Според Стефан Есер, "mysql_real_escape_string()
[е] не е безопасно, когато SET NAMES
се използва."
Неговото обяснение, от неговия блог :
SET NAMES обикновено се използва за превключване на кодирането от това, което е по подразбиране, към това, от което се нуждае приложението. Това се прави по начин, който
mysql_real_escape_string
не знае за това. Това означава, че ако превключите към някакво многобайтово кодиране, което позволява обратна наклонена черта като 2-ри 3-ти 4-ти... байт, ще се сблъскате с проблеми, защотоmysql_real_escape_string
не избяга правилно. UTF-8 е безопасен...Безопасният начин за промяна на кодирането е
mysql_set_charset
, но това е достъпно само в новите версии на PHP
Той обаче споменава, че UTF-8 е безопасен.