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

112
05 сентября 2019, 13:50

Я использую 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, все работает.

Answer 1

Никакого "преобразования" в "binary" при выполнении запроса не происходит.

В сообщениях об ошибке / логах нестандартные символы кодируются для большей совместимости.

READ ALSO
Добавить строки в таблице бд в зависимости массива

Добавить строки в таблице бд в зависимости массива

Подскажите пожалуйста, есть n-ое количество inputОно всегда разное, может быть 1, может быть 20

125
REST API - авторизация/регистрация через соцсети и по email/password

REST API - авторизация/регистрация через соцсети и по email/password

Требуется сделать регистрацию+авторизацию в мобильном приложении через соцсети или через емейл на удалённом REST API сервере (я отвечаю именно...

113
Не приходит письмо на почту после регистрации [дубликат]

Не приходит письмо на почту после регистрации [дубликат]

Данный вопрос является точным дубликатом:

123
Лишние символы в URL

Лишние символы в URL

Сорян за нубовские вопросы, но решения не нашелВникаю в разработку REST API, использую PHP STORM + MAMP Файл index

110