Как часть создания приложения для управления контентом, я столкнулся с проблемой, которую не могу отладить:
Я создал поле 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);
Данные сохраняются в БД под "itemcomment" в виде поля utm8mb4_bin
longtext
кодирующего utm8mb4_bin
.
Иногда это работает, иногда нет.
Нет журналов ошибок, которые я нашел для этого. Весь post
кажется, исчезает в воздухе при определенных данных.
Вид в недоумении, где даже начать отладку или в чем может быть проблема. Возможно, некоторые из грубых форматов, которые я добавляю, не очищены должным образом?
Что касается вашей проблемы, вы можете пойти на разные решения
$itemname = base64_encode($_POST['itemname']);
$itemcomment = base64_encode($_POST['textarea_content']);
но вам нужно будет base64_decode
после прочтения, чтобы получить оригинальный контент.
выберите blob
или эквивалентный тип данных для вашего столбца itemcomment
(я позволю вам найти, как написать вставку). Вам, безусловно, нужно будет "подготовить" запрос.
blob
не решило проблему само по себе, но как только я закодировал / расшифровал w / blog, это, похоже, решило проблему. Я собираюсь предположить, что текстовый тест copypasta, который я использовал, имел некоторое форматирование, которое не было экранировано должным образом, и кодирование / декодирование более или менее скрывает проблему.
include(): Failed opening ..... in .../u/index.php on line 61, referer: .../insert_item.php