在我将数据放入数据库之前,我将其传递给mysql_real_escape_string
。
如果我想将相同的数据复制到另一个表中,在复制之前是否需要再次通过mysql_real_escape_string
?
我写了一个小脚本来测试这个问题,看起来答案是肯定的:
$db = new AQLDatabase();
$db->connect();
$title = "imran's color";
$title = mysql_real_escape_string($title);
$sql = "insert into tags (title, color) values ('".$title."','@32324')";
$db->executeSQL($sql);
$sql = "select * from tags where color = '@32324' ";
$result = $db->executeSQL($sql);
while($row= mysql_fetch_array($result))
{
$new_title = $row['title'];
}
$new_title = mysql_real_escape_string($new_title);
$sql = "insert into tags (title, color) values ('".$new_title."','DDDDD')";
$db->executeSQL($sql);
注意:如果我删除了第二次mysql_real_escape_string
来电,那么第二次插入就不会发生
答案 0 :(得分:2)
正在做这样的事情吗?
从数据库中获取$ bla将“unescape”它,因此它可能再次成为有害的字符串。保存时总是再次逃脱它。
答案 1 :(得分:1)
在我将数据放入数据库之前,我总是把它变成Mysql_real_Escape_String。
你做得对。保持原样。虽然不是数据库,但查询它。
唯一的注意事项:只有字符串才能使用此功能进行转义。它不应该与任何其他查询部分一起使用。
在复制之前,我是否需要让它再次通过Mysql_real_Escape_String?
你没有回答过你的问题吗? Before I put [string-type] data into my [query] I always make it go the Mysql_real_Escape_String thing.
您的数据是否会转到SQL查询?所以,这是你已经得到的答案。
答案 2 :(得分:0)
好吧,如果你确定这些数据已经被正确转义,那就没有必要了。
mysql_real_escape_string用于1)逃避2)安全目的。因为它是您自己的数据库,只要您将数据传递到潜在黑客范围之外的其他数据库 - 您已经安全了
答案 3 :(得分:-2)
它已经被scaped,只是按原样复制它,如果要撤消mysql_real_escape_string,可以使用stripslashes($sting)
删除它