我用下面的代碼來存儲用戶密碼到MySQL表的密碼列是一個BINARY(20)
類型:mysql unhex()不能在linux服務器上工作?
$salted_hash = sha1($salt . $password);
$sql = sprintf("INSERT INTO foo(user, password) VALUES ('guest', UNHEX('%s'))", $salted_hash);
的選擇查詢匹配密碼的樣子:
$salted_hash = sha1($salt . $password);
$sql = sprintf("SELECT `userID` FROM `foo` WHERE `user`='guest' AND `password`=UNHEX('%s')", $salted_hash);
代碼工作當我連接到在Windows或Mac機器上運行的Web服務器時很好。然而,我的產品網絡主機是一臺Linux機器,並且SELECT
在那裏失敗。
我只能phpMyAdmin
我的網絡主機(mhpMyAdmin版本3.4.7.1)。通過phpmyadmin我執行以下查詢:
SELECT UNHEX('3530280EDB5AA715929266D1D6F0423ABC27B104')
顯示的結果是相同數量的十六進制數字3530280EDB5AA715929266D1D6F0423ABC27B104
,這似乎表明UNHEX
功能是不是做在Linux上任何事情。
如果我在Sequel Pro在Mac上執行相同的查詢,我得到50(ÛZ§fÑÖðB:¼'±
。
我不確定發生了什麼事以及在哪裏尋找。我想或者phpMyAdmin不能顯示二進制文件,或者確實有一些與UNHEX有關的問題(似乎不像)任何幫助表示讚賞。
什麼'SELECT UNHEX(BINARY'3530280EDB5AA715929266D1D6F0423ABC27B104')'show? – 2011-12-29 18:34:53
它顯示'3530280edb5aa715929266d1d6f0423abc27b104''表示它將十六進制字符串轉換爲小寫。那是什麼意思? – 2011-12-29 18:41:39