#php #mysql
#php #mysql
Вопрос:
Я чувствую себя глупо, задавая такой вопрос новичку, и я попытался поискать, но все, что я смог найти, — это источники, которые показывают, как выполнить экранирование, а это не то, о чем я спрашиваю.
Я использую PDO для добавления данных в базу данных. В результате материал экранируется. Проблема в том, что когда я показываю этот материал обратно пользователю, он отображается точно так же, как и в базе данных. Другими словами, экранированная одинарная кавычка отображается в виде косой черты слева плюс одинарная кавычка.
Я мог бы просто запустить какой-нибудь поиск / замену для всех экранированных последовательностей символов, но я уверен, что скорее всего существует «правильный» способ сделать это. Способ, который остается безопасным (или повышает безопасность)
Ответ №1:
Тогда вы делаете это неправильно. Экранирование SQL выполняется только для правильной вставки в базу данных и не нарушает синтаксис SQL, значения сохраняются в их неэкранированной форме. Экранирование значений необходимо только для их перехода в базу данных, значения никогда не должны изменяться безвозвратно. Особенно с PDO, вам вообще не нужно никакого экранирования.
Скорее всего, у вас включены волшебные кавычки, что вызывает двойной эскапизм. Пожалуйста, прочтите это внимательно:http://php.net/magic_quotes
Комментарии:
1. На самом деле я не выполняю никакого экранирования. Для этого я использую PDO. Были включены волшебные кавычки для входящих данных get / post. Не мной, моим провайдером. Теперь я отключил это. Спасибо за указатель.
Ответ №2:
Комментарии:
1. Лучше решить проблему, из-за которой косые черты были добавлены в первую очередь.