mysql_real_escape_string()
имеет дополнительное преимущество, заключающееся в правильном экранировании ввода текста относительно набора символов базы данных через необязательный параметр link_identifier .
Осознание набора символов является критическим отличием. addslashes()
добавит косую черту перед каждым восьмибитным двоичным представлением каждого символа, который должен быть экранирован.
Если вы используете какую-либо форму многобайтового набора символов, возможно, хотя, вероятно, только из-за плохой конструкции набора символов, одна или обе половины шестнадцатых или тридцати двухбитных представлений символов идентичны восьми битам символ addslashes()
добавит косую черту к.
В таких случаях вы можете добавить косую черту перед символом, который не должен быть экранирован, или, что еще хуже, вы можете получить косую черту в середине шестнадцати (или тридцати двух) битных символов, что повредит данные.
Если вам нужно экранировать контент в запросах к базе данных, вы всегда должны использовать mysql_real_escape_string()
, где это возможно. addslashes()
хорошо, если вы уверены, что база данных или таблица используют только 7 или 8-битную кодировку ASCII.