Intereting Posts
список всех изображений в каталоге в JSON Неопределенная переменная – У операторов switch есть область действия в PHP Использование onclick и onsubmit вместе объединить все файлы в каталог в один текстовый файл Издевательские функции PHP в модульных тестах Вход-Аутентификация в удаленную базу данных mysql получить атрибут src изображения на основе класса или идентификатора PHP-код mkdir ('images', '0777') создает папку с разрешениями 411! Зачем? PHP: возникли проблемы с загрузкой больших файлов PHP, включить ZTS, Pthreads вызов мета-тегов через php Как преобразовать строку, которая выглядит как шестнадцатеричный номер, в фактический шестнадцатеричный номер в php? Как изменить структуру по умолчанию Symfony2? Как я могу предотвратить срабатывание функции Ajax несколько раз при нажатии? Как найти тег объекта с параметром и вставить тег внутри HTML с помощью простого html DOM php

В чем разница между mysql_real_escape_string и addslashes?

mysql_real_escape_string и addslashes используются для mysql_real_escape_string данных перед запросом базы данных, так что в чем разница? (Этот вопрос не связан с параметризованными запросами / PDO / mysqli)

string mysql_real_escape_string ( string $unescaped_string [, resource $link_identifier ] )
mysql_real_escape_string() вызывает библиотечную функцию MySQL mysql_real_escape_string, которая добавляет обратную косую черту к следующим символам: \ x00, \ n, \ r, \, ', "и \ x1a.

string addslashes ( string $str )
Возвращает строку с обратными косыми чертами перед символами, которые должны быть указаны в запросах базы данных и т. Д. Эти символы представляют собой одинарные кавычки ('), двойную кавычку («), обратную косую черту (\) и NUL (байт NULL).

Они затрагивают разные персонажи. mysql_real_escape_string специфичен для MySQL. Addslashes – это просто общая функция, которая может применяться как к другим вещам, так и к MySQL.

mysql_real_escape_string() имеет дополнительное преимущество для правильного ввода текста в соответствии с набором символов базы данных через необязательный параметр link_identifier .

Знание набора символов является критическим различием. addslashes() добавит косую черту перед каждым восьмибитным двоичным представлением каждого символа, который должен быть экранирован.

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

В таких случаях вы можете получить косую черту, добавленную перед символом, который не должен быть экранирован или, что еще хуже, вы можете получить косую черту в середине шестнадцати (или тридцати двух) бит символов, которые могут испортить данные.

Если вам нужно избегать содержимого в запросах базы данных, вы всегда должны использовать mysql_real_escape_string() где это возможно. addslashes() отлично, если вы уверены, что база данных или таблица использует только кодировку ASCII 7 или 8 бит.

Дело 1:

 $str = "input's data"; print mysql_real_escape_string($str); input\'s data print addslashes($str); input\'s data; 

случай 2:

 $str = "input\'s data"; print mysql_real_escape_string($str); input\'s data print addslashes($str); input\\'s data; 

Кажется, что mysql_real_escape_string двоично-безопасный – в документации указано:

Если необходимо вставить двоичные данные, эту функцию необходимо использовать.

Я думаю, что безопаснее всегда использовать mysql_real_escape_string чем mysql_real_escape_string .

mysql_real_escape_string следует использовать, когда вы получаете двоичные данные, addslashes – для ввода текста.

Здесь вы можете увидеть различия: mysql-real-escape-string и addslashes