|
|
|
|
|
для: Mookapek
(09.11.2009 в 22:33)
| | mysql_real_escape_string() является усовершенствованной версией функции mysql_escape_string(), широко применяемой для формирования безопасных запросов к БД MySQL. Отличия этих двух функций в том, что mysql_real_escape_string() правильно работает с многобайтовыми кодировками.
Предположим, в обрабатываемых данных есть символ (скажем, в UTF-8), код которого состоит из двух байт — шестнадцатеричных 27 и 2B (десятичные 39 и 43 соответственно). mysql_escape_string() воспринимает каждый байт передаваемых ей данных как отдельный символ (точнее, как код отдельного символа) и решит, что последовательность байт 27 и 2B — это два разных символа: одинарная кавычка (') и плюс (+). Поскольку функция воспринимает кавычку как специальный символ, перед байтом с кодом 27, который на самом деле является частью какого-то безобидного символа, будет добавлен слэш (\). В результате данные отправятся в базу в искаженном виде.
Стоит отметить, что mysql_real_escape_string() работает правильно во всех случаях и может полностью заменить mysql_escape_string().
mysql_real_escape_string() доступна в PHP с версии 4.3.0. | |
|
|
|
|
|
|
|
для: neadekvat
(09.11.2009 в 22:39)
| | нет в utf-8 таких символов. По определению нет. | |
|
|
|
|
|
|
|
для: Trianon
(09.11.2009 в 22:41)
| | Первая ссылка по запросу "отличия mysql_escape_string и mysql_real_escape_string":
http://webew.ru/articles/2078.webew
~середина страницы.
Не сам придумал, но и проверить правильность не мог, т.к. в кодировках не силен.
Да и спрашивалось все равно другое, и пример, хоть и не правильный (по вашим словам), но наглядный. | |
|
|
|
|
|
|
|
для: neadekvat
(09.11.2009 в 22:56)
| | вот вот. Вы перепели без цитирования фрагмент чужой статьи.
А коль так - за достоверность приведенных фактов пришлось отвечать именно Вам.
Зачем? Тащил кто за язык?
Между прочим, на этом форуме была тема со ссылкой на корректное исследование, где приводились кодировки, в которых mysql_escape_string дает сбой. Это кодировки языков восточноазиатского региона, отличные от utf8.
И таки я до сих пор не понимаю, что помешало Mookapek'у эту тему обнаружить.
По поиску слова mysql_real_escape_string эта тема находится на раз.
http://softtime.ru/forum/read.php?id_forum=1&id_theme=66935
Подоплеку действий модератора, провоцирующих здесь лень и разгильдяйство, я не понимаю точно также.
(это чтоб было что стереть) | |
|
|
|
|
|
|
|
для: Trianon
(09.11.2009 в 23:05)
| | Сотел дать ссылку сюда: http://lmgtfy.com/ но потом глазами с этим текстом встретился и решил не вы...ся лишний раз :) Лучшеб вы..разил свое недовольствие. | |
|
|
|
|
|
|
|
для: Trianon
(09.11.2009 в 22:41)
| | . | |
|
|
|
|
|
|
|
для: Mookapek
(09.11.2009 в 22:33)
| | mysql_escape_string() не экраинрует % и _. Функция идентична mysql_real_escape_string(), исключая то, что mysql_real_escape_string() принимает параметром ещё и указатель на соединение и экранирует в зависимости от кодировки. mysql_escape_string() не делает этого и результат работы не зависит от кодировки, в который вы работаете с БД.
---------------------
PS. могу скинуть официальный справочник РНР-функций на русском (примерно половина переведена) | |
|
|
|
|
|
|
|
для: Mookapek
(09.11.2009 в 22:33)
| | Кроме того mysql_real_escape_string() требует соединения с базой данных, в то время как mysql_escape_string() может использоваться без установленного соединения. | |
|
|
|