這種鹽搞亂了我的SELECT命令:MYSQL和隨機字符搞亂它
p,ÙÕ†¤éÿ5xÃø¤ü¥-A™M> |§Éá\0yå-E
解碼輸出:
p‚ÙÕ†¤éÿ5xÃø¤ü¥–ä™m›|§Éá\0yå–e
無鹽:
mysql> SELECT userid, username FROM user;
+--------+--------------+
| userid | username |
+--------+--------------+
| 1 | user1 |
| 2 | user2 |
| 3 | user3 |
| 4 | user4 |
+--------+--------------+
4 rows in set (0.00 sec)
隨着鹽:
mysql> SELECT userid, username, salt FROM user;
+--------+--------------+----------------------------------+
| userid | username | salt |
+--------+--------------+----------------------------------+
| 1 | user1 | ]ææ=°ù¡£YÒp£'Rm§Éá yåe | |
| 3 | user2 | ¸ÀçqµgsN\ôü¥ä
ɪÓñ1r¦ôyr$ÅK |
| 4 | user4 | \7øþ ÇãÙr|ú&eå¡%»
yYRìÚ¬E |
+--------+--------------+----------------------------------+
4 rows in set (0.00 sec)
功能我使用用於獲取生成的我的鹽:
$鹽= mcrypt_create_iv(32,MCRYPT_DEV_RANDOM);
與逃生它:
$鹽= mysql_real_escape_string($鹽);
問題:選擇'鹽'時從不顯示用戶2的行。爲什麼? 相關問題: User3也有換行符,它有點搞亂我的表,可能與上面相同的問題。
我都試過,沒有運氣: 我用Google搜索與它的「MySQL的」結束每個單詞。我沒有找到任何東西..
謝謝。
鹽是二進制數據,並不打算輸出到終端。很可能你已經有一些控制角色在那裏用userid 2刪除線了。你爲什麼要打印鹽? –
@lc。我只是想知道我的註冊是否正常工作,然後我意識到在執行SELECT *時沒有user2。感謝您的回答,我會馬上檢查並嘗試用其他方式替換控制字符。 – Alice
爲什麼你會有第一個二進制「鹽」值?這些幾乎總是[base64編碼](http://php.net/manual/en/function.base64-encode.php)以避免字符集問題。 – tadman