如果我从MySQL结果中拉出一个字符串 - 然后在mysql_query()中使用该字符串......我还是要逃避它吗?我从未考虑过的东西,但刚刚遇到过。
答案 0 :(得分:2)
是的,因为当您检索字符串时,它将不再被转义。当你使用:
$sql = "INSERT yourtable(foo) VALUES ('" . mysql_real_escape_string($foo) . "')";
字符串未以转义形式存储在数据库中。当MySQL解析查询时,将删除转义,$foo
的原始值是存储的值,是您稍后再次读取数据时收到的值。
答案 1 :(得分:0)
是的,你必须这样做。如果第一次插入该字符串并且从未转义过该怎么办?
答案 2 :(得分:0)
是。我假设你的意思是mysql_real_escape_string
,mysql将返回未转义的版本,所以如果要重新发布,你将不得不重新转义这些值。
答案 3 :(得分:0)
是的,您需要 - 原因是您将其存储转义等等,因此当您检索它时,您可能会将其转换为原始形式(最终的想法是存储输入数据“按原样”保存它然后在输出时转义。)
因此,您需要在后续查询使用期间转义它,实际上是前端的输出。 (虽然出于前端目的,您可以根据数据类型使用htmlentities等。)