我是否需要在数据库数据上使用mysql_real_escape_string重新插入?

时间:2010-07-12 16:10:58

标签: php mysql mysql-real-escape-string

您好,并提前致谢。

我正在从数据库中检索数据。将数据添加到数据库时,数据已经通过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'];
    }

另外,在将数据与原始数据进行比较之前,我是否应对db数据执行任何操作,例如$_SERVER['REQUEST_URI']

感谢您提供任何帮助。

2 个答案:

答案 0 :(得分:3)

你应该重新申请。转义函数放入斜杠等,因此它是有效的SQL语法。这些斜杠实际上并不存储在数据库中。

答案 1 :(得分:1)

是。你回答了自己的问题 - 因为特殊字符在读取时被转换,你需要在写入时重新转义它们。

我不确定您对$_SERVER['REQUEST_URI']的确切问题。但如果你永远不要相信这些变量。因此,如果您在数据库查询中进行比较,至少,我建议将其转义。