Задать вопрос
@Shillkas11

PHP PDO почему идет преобразование текста в binary?

Я использую PHP PDO:
$statement = $connection->prepare("UPDATE item SET description = :desc WHERE id = :item_id");
$statement->execute([':desc' => 'Текст на русском и английском с элементами html большой длины (mediumText)', ':item_id' => 26]);

При выполнении данного запроса происходит ошибка:
SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\x81<sup>...' for column 'description' at row 3
. В логах запроса я обнаружил что по какой-то причине данные уже передаются в таком виде: {":item_id":26, ":desc":"(binary value)"}, т.е. непонятно почему описание становится binary value, именно поэтому и происходит ошибка при выполнения запроса, т.к. в бд поле имеет тип данных MediumText, и binary принимать не может. Как это можно исправить?

P.S. При вставке данных напрямую в бд, без PDO, все работает.
  • Вопрос задан
  • 118 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Никакого "преобразования" в "binary" при выполнении запроса не происходит.

В сообщениях об ошибке / логах нестандартные символы кодируются для большей совместимости. К выполненному запросу этот формат не имеет отношения.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы