PHP-вставка двоичных данных в mysql использование подготовленных операторов

Мы пытались использовать DUnit с Дельфи 5, но это не работало хорошо. Особенно, если Вы реализуете COM-интерфейсы, мы нашли, что много зависимостей установили всю тестовую инфраструктуру. Я не знаю, улучшилась ли тестовая поддержка в более новых версиях.

12
задан David Espart 18 November 2009 в 11:15
поделиться

2 ответа

Функция PHP sha1 возвращает строковое представление шестнадцатеричного числа.

Это означает, что если вы распечатаете его на экране, оно отобразит шестнадцатеричное число. . Но в памяти это набор символов ASCII.

Итак, возьмем шестнадцатеричное число 1A2F . Как ASCII в памяти, это будет 0x31413246 , вместо 0x1A2F

обычный интерфейс MySQL отправляет все аргументы в виде строк. При использовании обычного интерфейса MySQL преобразует строку ASCII в двоичное значение.

Новый метод подготовленного оператора отправляет все как двоичное. Итак, ваше красивое значение «1A2F» теперь будет отправлено как 0x31413246 и вставлено в столбец. - источник: dev.mysql.com - Подготовленные операторы

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

7
ответ дан 2 December 2019 в 21:44
поделиться

попробуйте вместо этого:

if($stmt = $mysqli->prepare("INSERT INTO table (id, field1) VALUES (unhex(?), ?)") {
    $stmt->bind_param('ss', $id, $field1);
    //execute statement
}
5
ответ дан 2 December 2019 в 21:44
поделиться
Другие вопросы по тегам:

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