Жестко отрицательный ответ gs на самом деле является правдоподобным.
Стандартный SQL использует удвоение, чтобы избежать буквального апострофа. Нестандартное использование MySQL обратных косых черт для экранирования является настройкой по умолчанию, но его можно отключить и часто, в частности, в sql_mode ANSI.
В этом случае будет работать только удвоенный синтаксис, и любое приложение, которое вы используете с помощью addlashes (или другого ad-hoc метода экранирования), будет ломаться. mysql_real_escape_string будет использовать тот способ, который лучше всего подходит для sql_mode соединения.
Проблема многобайтовой кодировки также важна, если вы все еще используете эти неприятные восточно-азиатские кодировки, которые используют более 128 символов, но тогда вы действительно хотите использовать UTF-8. \ n-escaping, с другой стороны, не вызывает беспокойства, так как MySQL вполне может справиться с необработанной новой строкой в заявлении.
Любая кодировка с допустимым многобайтовым символом, заканчивающимся на 0x5c, может прокрасть кавычки мимо 'addslashes()'. Крис Шифлетт имеет отличный пример в своем блоге с использованием GBK. http://shiflett.org/blog/2006/jan/addslashes-versus-mysql-real-escape-string – Matthew
Вы _right_, но вы не сказали _how_. – bobobobo
Совсем наоборот - в целом добавляет, все в порядке, но в некоторых крайне редких случаях нам действительно нужны mres. –