Php 如果我想使用撇号用文本更新textarea字段,htmlspecialchars会影响htmlspecialchars吗?

Php 如果我想使用撇号用文本更新textarea字段,htmlspecialchars会影响htmlspecialchars吗?,php,mysql,mysql-real-escape-string,htmlspecialchars,Php,Mysql,Mysql Real Escape String,Htmlspecialchars,我有一个页面,显示在站点不同区域创建的记录。此页面显示记录并允许用户更新内容。有一个textarea字段通常包含撇号,例如,We's,I's,It's。。。等等 文本字段区域显示为htmlentities: <textarea name="deal_detail" cols="35" rows="2" id="details"><?php echo htmlentities($row_Recordset1['deal_detail'], ENT_COMPAT, ''); ?&g

我有一个页面,显示在站点不同区域创建的记录。此页面显示记录并允许用户更新内容。有一个textarea字段通常包含撇号,例如,We's,I's,It's。。。等等

文本字段区域显示为htmlentities:

<textarea name="deal_detail" cols="35" rows="2" id="details"><?php echo htmlentities($row_Recordset1['deal_detail'], ENT_COMPAT, ''); ?></textarea>
我尝试过在更新之前使用htmlspecialchars和mysqli\u real\u escape\u字符串将$\u POST[deal\u detail]移动到一个变量,但什么都没有发生,当它尝试更新时,我总是会遇到相同的常见错误,因为它将撇号识别为代码的一部分,而不是文本


我在这里读过50篇关于类似问题或信息的帖子,但似乎没有任何效果。我想知道使用htmlentities是否会影响…

好的,我刚刚添加了一个PHP手册中的函数,它帮助我解决了这个问题

    function safe($admin_buy_local) {
    return mysql_real_escape_string($admin_buy_local);
}
然后,当我插入或更新时,我只是将文本移动到函数中,并将其保存在变量中

$deal_detail=safe($_POST['deal_detail']);
它使用撇号旁边的\保存数据

        $updateSQL = sprintf("UPDATE deals SET deal_title=%s, deal_detail=%s, deal_image=%s, renov=%s  WHERE id_deals=%s",
            GetSQLValueString($_POST['deal_title'], "text"),
            GetSQLValueString($_POST['deal_detail'], "text"),
            GetSQLValueString($_POST['deal_image'], "text"),
            GetSQLValueString($renov, "int"),
            GetSQLValueString($_POST['id_deals'], "int"));

我现在的问题是在mysql中显示保存的数据,而不显示\。我想我将不得不使用htmlspecialchar,但我需要检查如何使用。

为什么不使用bind_param?我以为在将值作为元素属性回显时使用htmlentities。你确定你需要它作为文本区吗?textarea元素与input Type文本元素不同。它包装文本。换句话说,这是一个问题:使用mysqli\u real\u escape\u字符串应该可以工作。您还需要将字符串值放在SQL中的引号中。@Verhaeren您需要它来防止值包含时出现问题,因为这将结束该区域。什么是GetSQLValueString?如果您使用的是mysqli扩展,您不应该使用mysql函数。您应该使用'mysqli\u real\u escape\u字符串。但如果你用事先准备好的陈述会更好。为什么要继续使用过时的机制?