首页 > 解决方案 > 富文本编辑器不将某些输入从 TextArea 保存到 MySQL

问题描述

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

我在一个由富文本编辑器修改的表单中创建了一个 textarea 字段。我尝试了一些编辑器:TinyMCE、SummerNote 和其他一些编辑器,两次都得到了相同的结果。

数据在 90% 的情况下都可以提交。在 10% 的情况下,我需要测试一大块文本 + 格式 + 图像,当我提交表单时,它会执行与提交时相同的所有操作,但没有发生实际的数据库写入,什么都没有记录或保存。

例如,我可能会复制/粘贴此页面的主要内容: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数据作为字段编码保存在“itemcomment”下的数据库中utm8mb4_bin

有时有效,有时无效。

我没有为此找到错误日志。在某些输入下,整体post似乎消失得无影无踪。

甚至不知道从哪里开始调试或问题可能是什么。也许我正在使用的一些粗略格式没有正确清理?

标签: phpmysqltextareaform-submitwysiwyg

解决方案


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

保持数据库原样

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

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

更改数据库中的数据类型

为您的列选择一个blob或等效的数据类型itemcomment(我让您找到如何编写插入)您当然需要“准备”查询。


推荐阅读