富文本编辑器未将某些输入从TextArea保存到MySQL

时间:2019-03-04 20:41:29

标签: php mysql textarea form-submit wysiwyg

作为构建内容管理应用程序的一部分,我遇到了无法调试的问题:

我已经以富文本编辑器修改过的形式创建了textarea字段。我尝试了一些编辑器:TinyMCE,SummerNote和其他一些编辑器,两次都得到相同的结果。

在90%的情况下,数据都可以提交。在10%的情况下,我需要测试大块的文本+格式+图片,当我提交表单时,它会执行所有与提交一样的操作,但是没有实际的DB写操作发生,没有任何反应记录或保存。

例如,我可能复制/粘贴此页面的主要内容:https://knowledge.hubspot.com/articles/kcs_article/cms-blog/create-and-publish-a-blog-post作为用户可能输入的lorem ipsum的“糟糕”示例,它不会保存。但是,如果我仅粘贴第一步(从“创建新博客文章”到第一张图片的正下方),则可以很好地保存它。极长的纯文本格式可以很好地保存。

数据被正确地清理(我认为):

      $itemname = $_POST['itemname'];
      $itemcomment = $_POST['textarea_content'];

      $query = "INSERT INTO `table`.`items` (`itemname`, `itemcomment`) VALUES ('$itemname', '$itemcomment');";

 mysql_query($query);

数据以“ longtext”字段编码为“ utm8mb4_bin”的形式保存在数据库的“ itemcomment”下。

有时可以,有时不能。

我没有为此找到任何错误日志。通过某些输入,整个post似乎消失了。

对于在哪里开始调试或可能出现的问题感到困惑。也许我提取的某些粗俗格式没有正确清理?

1 个答案:

答案 0 :(得分:0)

关于您的问题,您可以寻求不同的解决方案

保持数据库原样

  $itemname = base64_encode($_POST['itemname']);
  $itemcomment = base64_encode($_POST['textarea_content']);

但是您需要在阅读后base64_decode才能获得原始内容。

更改数据库中的数据类型

blob列选择itemcomment或等效数据类型(我让您找到如何编写插入内容) 您肯定需要“准备”查询。