MYSQL unhex()与PHP hex2bin()不同,两者给出的结果不同

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 约阿希姆·伊萨克森 我不确定您是如何获得该值

我尝试使用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 约阿希姆·伊萨克森


我不确定您是如何获得该值的,但是在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代码。