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

Rich Text Editors Not Saving Certain Inputs from TextArea to MySQL

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

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

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

例如,我可能 copy/paste 此页面的主要内容:https://knowledge.hubspot.com/articles/kcs_article/cms-blog/create-and-publish-a-blog-post 作为用户可能输入的 lorem ipsum 的 'bad' 示例,它不会保存.但是,如果我只粘贴第一步(从 "Create a new Blog Post" 到第一张图片的正下方),它会很好地保存。超长纯文本保存正常

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

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

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

 mysql_query($query);

数据保存在"itemcomment"下的数据库中作为longtext字段编码utm8mb4_bin

有时有效,有时无效。

我没有找到与此相关的错误日志。整个 post 似乎随着某些输入消失得无影无踪。

有点不知道从哪里开始调试或可能是什么问题。也许我拉的一些袖口格式没有正确清理?

针对您的问题,您可以寻求不同的解决方案

保持数据库原样

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

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

更改数据库中的数据类型

为您的 itemcomment 列选择一个 blob 或等效数据类型(我让您找到如何编写插入) 您肯定需要 "prepare" 查询。