Редакторы форматированного текста не сохраняют определенные входные данные из TextArea в MySQL

0

Как часть создания приложения для управления контентом, я столкнулся с проблемой, которую не могу отладить:

Я создал поле 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 кажется, исчезает в воздухе при определенных данных.

Вид в недоумении, где даже начать отладку или в чем может быть проблема. Возможно, некоторые из грубых форматов, которые я добавляю, не очищены должным образом?

  • 0
    Я предлагаю больше включить проблему, чем MySQL.
  • 0
    первая ошибка показывает include(): Failed opening ..... in .../u/index.php on line 61, referer: .../insert_item.php
Показать ещё 3 комментария
Теги:
textarea
wysiwyg
form-submit

1 ответ

0
Лучший ответ

Что касается вашей проблемы, вы можете пойти на разные решения

сохраняя БД как есть

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

но вам нужно будет base64_decode после прочтения, чтобы получить оригинальный контент.

изменение типа данных в БД

выберите blob или эквивалентный тип данных для вашего столбца itemcomment (я позволю вам найти, как написать вставку). Вам, безусловно, нужно будет "подготовить" запрос.

  • 0
    Это сработало! Я сделал оба. Изменение типа столбца db на blob не решило проблему само по себе, но как только я закодировал / расшифровал w / blog, это, похоже, решило проблему. Я собираюсь предположить, что текстовый тест copypasta, который я использовал, имел некоторое форматирование, которое не было экранировано должным образом, и кодирование / декодирование более или менее скрывает проблему.
  • 0
    Как следствие, защищает ли base64 строку перед обработкой в MySQL от SQL-инъекции?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню