Я использую PHP PDO таким образом:
$statement = $connection->prepare("UPDATE item SET description = :desc WHERE id = :item_id");
$statement->execute([':desc' => 'Текст на русском и английском с элементами html большой длины (mediumText)', ':item_id' => 26]);
При передаче в execute массива все данные обрабатываются согласно PDO константе PDO::PARAM_STR, т.е. данные будут обработаны (экранированы все кавычки) и обернуты в одинарные кавычки в самом запросе, но почему-то если передать большой объем текста, то данные будут переданы в таком виде:
\xd0\xb8\xd0\xb5\x3a\x3c\x2f\x70\x3e\x20\x3c\x70\x3e\xd0\xbe\xd1\x81\xd1\x82\xd0\xb5\xd0\xbe\xd0\xb0\xd1 и т.д.
(binary value) из-за этого при запросе происходит ошибка 1366, т.к. в бд поле имеет тип данных MediumText и не может принимать данные в таком формате. Как это можно исправить, при учете того что в бд не нужно изменять тип данных для поля на mediumBinary и т.п.?
P.S. При вставке данных напрямую в бд, без PDO, все работает отлично. Т.е. проблемы с данными нет, есть проблема с PDO.