您好,并提前致谢。
我正在从数据库中检索数据。将数据添加到数据库时,数据已经通过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']
?
感谢您提供任何帮助。
答案 0 :(得分:3)
你应该重新申请。转义函数放入斜杠等,因此它是有效的SQL语法。这些斜杠实际上并不存储在数据库中。
答案 1 :(得分:1)
是。你回答了自己的问题 - 因为特殊字符在读取时被转换,你需要在写入时重新转义它们。
我不确定您对$_SERVER['REQUEST_URI']
的确切问题。但如果你永远不要相信这些变量。因此,如果您在数据库查询中进行比较,至少,我建议将其转义。