Как мне отобразить экранированные символы?

#php #mysql

#php #mysql

Вопрос:

Я чувствую себя глупо, задавая такой вопрос новичку, и я попытался поискать, но все, что я смог найти, — это источники, которые показывают, как выполнить экранирование, а это не то, о чем я спрашиваю.

Я использую PDO для добавления данных в базу данных. В результате материал экранируется. Проблема в том, что когда я показываю этот материал обратно пользователю, он отображается точно так же, как и в базе данных. Другими словами, экранированная одинарная кавычка отображается в виде косой черты слева плюс одинарная кавычка.

Я мог бы просто запустить какой-нибудь поиск / замену для всех экранированных последовательностей символов, но я уверен, что скорее всего существует «правильный» способ сделать это. Способ, который остается безопасным (или повышает безопасность)

Ответ №1:

Тогда вы делаете это неправильно. Экранирование SQL выполняется только для правильной вставки в базу данных и не нарушает синтаксис SQL, значения сохраняются в их неэкранированной форме. Экранирование значений необходимо только для их перехода в базу данных, значения никогда не должны изменяться безвозвратно. Особенно с PDO, вам вообще не нужно никакого экранирования.

Скорее всего, у вас включены волшебные кавычки, что вызывает двойной эскапизм. Пожалуйста, прочтите это внимательно:http://php.net/magic_quotes

Комментарии:

1. На самом деле я не выполняю никакого экранирования. Для этого я использую PDO. Были включены волшебные кавычки для входящих данных get / post. Не мной, моим провайдером. Теперь я отключил это. Спасибо за указатель.

Ответ №2:

используйте косые черты

 echo stripslashes($var);
  

http://php.net/manual/en/function.stripslashes.php

Комментарии:

1. Лучше решить проблему, из-за которой косые черты были добавлены в первую очередь.