В базе данных MYSQL у меня есть varbinary(255)
поле.
В моем PHP-скрипте я пытаюсь передать ввод строки (в десятичной или шестнадцатеричной форме) в MYSQL, чтобы сохранить значение в varbinary (255). Я попытался передать значение в десятичном, шестнадцатеричном и двоичном виде, но ни один из них не дал мне правильное значение.
$val = "0x54321"; // Used hardcoded hex value here, but it can be also decimal in my code
$v_dec = intval($val,0); // That's why I have intval() here
$v_hex = dechex(intval($val,0));
$v_bin = decbin(intval($val,0));
$v_bin_2 = (binary)intval($val,0);
Я попытался вставить эти значения с помощью обычного INSERT
запрос, но каждый из них дал странные цифры.
Variable Converted Value (in php) varbinary Value (in MYSQL)
v_dec: 344865 -> 333434383635
v_hex: 54321 -> 3534333231
v_bin: 1010100001100100001 -> 31303130313030303031313030313030303031
v_bin2: 344865 -> 333434383635
В каком типе данных должно быть значение? Я хочу сделать преобразование в php вместо использования CAST()
в запросе MYSQL. Спасибо!
РЕДАКТИРОВАТЬ:
Я хочу правильно отобразить сохраненное значение varbinary в шестнадцатеричном формате.
РЕДАКТИРОВАТЬ:
Нашел проблему. Проблема заключалась в том, как я получал значение. Вместо HEX(value)
Я нашел это как BIN(value)
на уровне MySQL, а затем преобразовал его в гекс с dechex(bindec($value))
в php.
Задача ещё не решена.
Других решений пока нет …