php - 富文本编辑器不将某些输入从 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
似乎消失得无影无踪。
甚至不知道从哪里开始调试或问题可能是什么。也许我正在使用的一些粗略格式没有正确清理?
解决方案
关于您的问题,您可以寻求不同的解决方案
保持数据库原样
$itemname = base64_encode($_POST['itemname']);
$itemcomment = base64_encode($_POST['textarea_content']);
但是您需要base64_decode
在阅读后才能获得原始内容。
更改数据库中的数据类型
为您的列选择一个blob
或等效的数据类型itemcomment
(我让您找到如何编写插入)您当然需要“准备”查询。
推荐阅读
- c - 当我使用带有 -O1 优化的 gcc 时。数组数据初始化被忽略,当我尝试使用数组时得到未初始化的数据
- python-decorators - Python 在使用装饰器时在关闭时返回 None
- php - 在 WOOCOMMERCE 中更新价格、状态库存、发布状态表格 CSV(更多 20k 产品)(内存用完 3000 个产品)
- python - 在python中将字符串更改为ascii
- java - YML 文件中的 HikariCP DataSourceProperties
- git - 从 Git 中删除文件,保持本地(对于拉取的其他人也保持本地)
- javascript - Styled-components 道具被传递但不适应
- visual-studio-code - 无法在 vscode 中打开已保存的工作区
- java - android.database.sqlite.SQLiteException:表contacts_table没有名为phone_number的列(代码1):,编译时:INSERT INTO contacts_table
- javascript - 如何在 React Native 中返回一个值的一行中获取 Firebase Cloud Firestore 数据