作为构建内容管理应用程序的一部分,我遇到了一个无法调试的问题:
我已经在一个由富文本编辑器修改的表单中创建了一个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”下的DB中。
有时候它有效,有时则不然。
我没有找到错误日志。整个post
似乎在某些投入下消失得无影无踪。
在哪里甚至开始调试或问题可能是一种损失。也许我拉的一些粗俗格式没有正确清理?
关于您的问题,您可以寻求不同的解决方案
$itemname = base64_encode($_POST['itemname']);
$itemcomment = base64_encode($_POST['textarea_content']);
但阅读后你需要base64_decode
才能获得原始内容。
为blob
列选择itemcomment
或等效数据类型(我让你找到如何编写插入)你肯定需要“准备”查询。