在mysql表之间移动时转义字符串

时间:2011-03-08 22:25:37

标签: php mysql

如果我从MySQL结果中拉出一个字符串 - 然后在mysql_query()中使用该字符串......我还是要逃避它吗?我从未考虑过的东西,但刚刚遇到过。

4 个答案:

答案 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等。)