2016-03-27 47 views

回答

0

我不知道你是如何得到這個值,但是做你的選擇在MySQL提示給出了相同的值PHP;

mysql> select unhex(md5('google.com')); 
+--------------------------+ 
| unhex(md5('google.com')) | 
+--------------------------+ 
| Y �K'��w��SoZ   | 
+--------------------------+ 
1 row in set (0.00 sec) 

什麼你展示的是同樣的事情的base64編碼值;

mysql> select to_base64(unhex(md5('google.com'))); 
+-------------------------------------+ 
| to_base64(unhex(md5('google.com'))) | 
+-------------------------------------+ 
| HVkg9LRLJ6gCvXfE8FNvWg==   | 
+-------------------------------------+ 
1 row in set (0.00 sec) 

你的值如何得到base64編碼我不確定,但它似乎與你顯示的MySQL查詢無關。這可能是由於你如何在PHP中獲取值。

+0

@HassanAmir SQLFiddle base64-編碼二進制值以便能夠以可用的形式將它們輸出爲文本,但這並不意味着MySQL會在您直接查詢時執行此操作。輸出嚴格SQLfiddle特定。 –

+0

@HassanAmir [這個小提琴](http://sqlfiddle.com/#!9/9eecb7d/51310)顯示了這種效果,無論您是否使用base64編碼,SQLfiddle都會顯示完全相同的值。 –

+0

即時嘗試插入數據在二進制(16)MySQL列,它的工作,如果我從MySQL命令行使用unhex,但不是從使用PHP的hex2bin工作 –