这种盐搞乱了我的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