MYSQL unhex()与PHP hex2bin()不同,两者给出的结果不同
我尝试使用PHP而不是MYSQL在数据库中添加键值MYSQL unhex()与PHP hex2bin()不同,两者给出的结果不同,php,mysql,Php,Mysql,我尝试使用PHP而不是MYSQL在数据库中添加键值 select unhex(md5('google.com')) from x; 输出 HVkg9LRLJ6gCvXfE8FNvWg== Y ��K'��w��SoZ 然而,使用PHP echo hex2bin((md5("google.com"))); 输出 HVkg9LRLJ6gCvXfE8FNvWg== Y ��K'��w��SoZ 我不确定这里出了什么问题,有什么帮助吗 Edit1 约阿希姆·伊萨克森 我不确定您是如何获得该值
select unhex(md5('google.com')) from x;
输出
HVkg9LRLJ6gCvXfE8FNvWg==
Y ��K'��w��SoZ
然而,使用PHP
echo hex2bin((md5("google.com")));
输出
HVkg9LRLJ6gCvXfE8FNvWg==
Y ��K'��w��SoZ
我不确定这里出了什么问题,有什么帮助吗
Edit1
约阿希姆·伊萨克森
我不确定您是如何获得该值的,但是在MySQL提示符下执行select会得到与PHP中相同的值
mysql> select unhex(md5('google.com'));
+--------------------------+
| unhex(md5('google.com')) |
+--------------------------+
| Y �K'��w��SoZ |
+--------------------------+
1 row in set (0.00 sec)
显示的是同一事物的base64编码值
我不确定您的值是如何进行base64编码的,但是它似乎与您显示的MySQL查询无关。这可能是由于您在PHP中获取值的方式造成的。@HassanAmir SQLFiddle base64对二进制值进行编码,以便能够以可用的形式将其作为文本输出,但这并不意味着如果您直接查询MySQL,MySQL会这样做。输出是严格特定于SQLfiddle的。@HassanAmir显示了这种效果,SQLfiddle显示了完全相同的值,无论您是否对其进行base64编码。我试图在二进制(16)mysql列中插入数据,如果我使用unhex从mysql命令行执行该操作,但不能从hex2bin使用PHP@HassanAmir你能添加实际的插入代码吗?很难回答问题之外的问题:)将答案标记为正确,准备好后,我将在下面发布php代码。