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

时间:2014-12-20 01:18:09

标签: php mysql mysql-real-escape-string htmlspecialchars

我有一个页面,显示在网站的其他区域中创建的记录。此页面显示记录并允许用户更新内容。有一个textarea字段,通常包含撇号(例如,我们,我,它是......等等)。

文本字段区域显示为htmlentities:

<textarea name="deal_detail" cols="35" rows="2" id="details"><?php echo htmlentities($row_Recordset1['deal_detail'], ENT_COMPAT, ''); ?></textarea>

当我点击“保存”时,它会尝试更新记录(注意:如果它没有撇号,它会很好地保存它。)

        $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"));

我已经尝试将$ _POST [deal_detail]移动到一个变量,在更新之前使用htmlspecialchars和mysqli_real_escape_string,但没有任何反应,我在尝试更新时仍然遇到相同的常见错误,因为它将撇号识别为代码,而不是文本。

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

1 个答案:

答案 0 :(得分:0)

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

    function safe($admin_buy_local) {
    return mysql_real_escape_string($admin_buy_local);
}

然后当我插入或更新时,我只是将文本移动到函数中并将其保存在变量中。

$deal_detail=safe($_POST['deal_detail']);

它使用撇号旁边的\来保存数据。

我现在的问题是在没有“\”的情况下在mysql中显示保存的数据。我假设我将不得不使用htmlspecialchar(),但我需要检查如何。