我有一个页面,显示在网站的其他区域中创建的记录。此页面显示记录并允许用户更新内容。有一个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会影响......
答案 0 :(得分:0)
好的,我刚刚在PHP手册中添加了一个函数,它帮助我解决了这个问题。
function safe($admin_buy_local) {
return mysql_real_escape_string($admin_buy_local);
}
然后当我插入或更新时,我只是将文本移动到函数中并将其保存在变量中。
$deal_detail=safe($_POST['deal_detail']);
它使用撇号旁边的\来保存数据。
我现在的问题是在没有“\”的情况下在mysql中显示保存的数据。我假设我将不得不使用htmlspecialchar(),但我需要检查如何。