Нужно ли использовать mysql_real_escape_string в данных базы данных для повторной вставки? - PullRequest
0 голосов
/ 12 июля 2010

Здравствуйте и спасибо заранее.

Я получаю данные из БД.Данные уже прошли через mysql_real_escape_string, когда они были добавлены в базу данных.

После получения я сравниваю их с необработанной переменной и, в зависимости от результата, могу повторно вставить исходные данные базы данных обратно вдБ в другое, другое, поле.

Мой вопрос: нужно ли использовать mysql_real_escape_string для этих данных, полученных из базы данных?

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

Мой код:

if(isset($row['location_uri']) && $row['location_uri'] != $location_uri)
    {
    $session_previous_page = $row['previous_page_uri'];
    }
else
    {
    $session_previous_page = $row['location_uri'];
    }

Кроме того, я должен что-то сделать с данными БД, прежде чем сравнивать ихк необработанным данным, скажем от $_SERVER['REQUEST_URI']?

спасибо за любую помощь, которую вы можете оказать.

Ответы [ 2 ]

3 голосов
/ 12 июля 2010

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

1 голос
/ 12 июля 2010

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

Я не уверен, что ваш точный вопрос относительно $_SERVER['REQUEST_URI']. Но если вы никогда не должны доверять этим переменным. Так что, если вы сравниваете его в запросе к БД, по крайней мере, я предлагаю его избежать.

...