如果复制数据,再次mysql_real_escape_string?

时间:2011-03-29 11:32:13

标签: php mysql database escaping

在我将数据放入数据库之前,我将其传递给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来电,那么第二次插入就不会发生

4 个答案:

答案 0 :(得分:2)

正在做这样的事情吗?

  1. 将mysql_real_escape_string($ bla)保存到数据库
  2. 从数据库中获取$ bla
  3. 再次保存$ bla(在另一张表中......)
  4. 从数据库中获取$ bla将“unes​​cape”它,因此它可能再次成为有害的字符串。保存时总是再次逃脱它。

答案 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)删除它

PD:这是假的,现在我理解为什么。