0

嗨,当我想在我的数据库中插入评论时,我会使用 Mysql Escape String 函数来清理数据,但这会在字段中逐字插入以下内容。我打印评论,它工作正常并向我显示文本但是当我对其进行清理时,它实际上将以下内容插入到我的数据库中

  mysql_real_escape_string(Comment)

这是我的插入语句,Id 插入正确,但注释不只是将“mysql_real_escape_string(Comment)”插入到字段中。有什么问题?

 foreach($html->find("div[class=comment]") as $content){
  $comment = $content->plaintext;
  $username = mysql_real_escape_string($comment);
   $querytwo = "insert into Tchild(Tid,Tcomment)values('$id','$username')";

   $resulttwo = $db -> Execute($querytwo);
  }
4

2 回答 2

2

如果我正确阅读了文档,您应该像这样拨打电话:

$db->Execute("insert into Tchild(Tid,Tcomment)values(?, ?)", array($id, $username));

这将解释正确的转义。在查询字符串中包含未转义的值是危险的,应尽可能避免。由于您的数据库层支持 SQL 占位符,?因此您应该在任何时候将数据放入查询中时充分利用这些占位符。

mysql_real_escape_string除非您使用mysql_query. 它需要连接到 MySQL 数据库才能正常运行。

于 2013-05-14T01:55:30.933 回答
0

由于您使用的是 ADODB,因此您想要的可能是$db->qstr(). 例如:

$username = $db->qstr($comment, get_magic_quotes_gpc());

有关更多信息,请参阅此页面:http: //phplens.com/lens/adodb/docs-adodb.htm

于 2013-05-14T01:55:14.427 回答