Этот вопрос закрыт для ответов, так как повторяет вопрос PHP PDO почему идет преобразование текста в binary?
@Shillkas11

PHP PDO предопределенная константа PARAM_STR?

Я использую 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.
  • Вопрос задан
  • 142 просмотра
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
PDO никак не преобразовывает данные. Ни большие, ни маленькие. И предопределенная константа PARAM_STR тут тоже не при чем.
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы