通过带有特殊字符的javascript/PHP通过ajax表单传递MySQL数据


Passing MySQL data through an ajax form via javascript/PHP with specialchars

我最近创建了一个基本的PHP网页,它列出了从MySQL表中提取的信息,并以各种方式显示这些信息。我希望允许用户在不刷新页面的情况下向表中添加一个新项目,编辑列表中的一个项目,并删除列表中的某个项目(Ajax)。

目前正在进行

  • 要添加/编辑文章,请单击一个链接,该链接会提示popover ajax表单,并通过执行以下函数setEdit(comment)来填充其内容(如果正在编辑)
  •    <a class="popup-button" title="<?php echo $row['comment']; ?>" onclick="setEdit('<?php if($row['comment']){ echo $row['comment']; } else { echo "Enter comment here..."; } ?>');"><?php echo $row['listitem']; ?></a>
    

  • setEdit()注释如下
  • function setEdit(editcomment)
    {
          if(editcomment){ document.getElementById('help-us-comment').value=editcomment; }
    }
    

  • 然后,在提交ajax表单后,由以下php代码处理
  •  if(isset($_POST['comment_text']))
        $comment=$_POST['comment_text'];
        $sql = "INSERT INTO table SET
        comment='$comment'";
    

    问题:我在试图通过1、2、3获取数据库内容时遇到了持续的问题,而不会在新行、单引号或双引号处摔倒。我尝试了无数次替换标签、htmlspecialchar和nl2br的组合,但都没有成功——现在它已经到了如此复杂和编码/解码的地步,我认为我缺少一种更简单、更明显的方法。

    当试图将数据加载到表单中时,会出现主要问题,通常情况下,要么表单发生故障,根本拒绝填充(通常是由于提取的数据断开了链接,即单引号或新行),要么表单中填充了特殊字符,而不是要编辑的纯文本。

    我试着尽可能多地详细介绍,但如果需要更多,我很乐意提供。如果这是一个明显的修复/错误,我也很抱歉,我是个白痴。

    这里有两个问题:存储和显示。

    要显示,您应该查看htmlentities,它使其成为安全的HTML(它为您执行所有引号替换、HTML编码等操作),这样您的字符串就可以安全地显示为纯文本或输入值。

    要存储数据,您应该清理查询。您可以使用mysqli和绑定参数,或者使用mysql_real_escape_string手动转义输入。

    否则,向Bobby Tables问好;)