Mysql查询 – 这是返回blatanty不正确的结果

我正在构build一个运行Ubuntu 10.10LTS,Apache2,Mysql 5.1和php5的VPS节点。

即使我使用了正确的login信息,我也无法通过浏览器login到我的网站pipe理员。 所以我从命令行login检查结果。

当我运行这个查询时,我得到了预期的结果:

mysql> select * from users; +----+----------+-----------------------+----------+ | id | username | email | password | +----+----------+-----------------------+----------+ | 1 | myUserName | [email protected] | myPassword | +----+----------+-----------------------+----------+ 

这个查询也是一样的:

 mysql> select * from users where id = 1; +----+----------+-----------------------+----------+ | id | username | email | password | +----+----------+-----------------------+----------+ | 1 | myUserName | [email protected] | myPassword | +----+----------+-----------------------+----------+ 1 row in set (0.00 sec) 

但是当我运行这个查询时,我得到了这个“意外的响应”:

 mysql> select * from users where username = 'myUserName' and password = 'myPassword'; Empty set (0.00 sec) 

我不知道为什么会发生这种情况。 任何帮助将不胜感激。 顺便说一句..我将encryption用户的细节,但现在我只是想让它成立。

请帮忙,

谢谢

只要把它变成一个答案,基于你的SQL查询的格式,它看起来像你的用户名字段中有空格。 那是:

 mysql> select * from users where id = 1; +----+----------+-----------------------+----------+ | id | username | email | password | +----+----------+-----------------------+----------+ | 1 | myUserName | [email protected] | myPassword | +----+----------+-----------------------+----------+ 1 row in set (0.00 sec) 

换句话说, id=1的用户myUserName___段是myUserName___ ,其中_用于说明空格。 这就是为什么当你使用username LIKE 'myUserName%' (它说包含以myUserName开头的所有东西)都能正常工作。

密码也是散列密码的mysql函数的名称; 我想知道这是否会成为问题? 尝试引用表名。

此外,在stringmyUserName之后似乎还有一些空白。 我怀疑这表明应用程序错误。 如果你要update users set username='myUserName' where id=1; 你可能会发现它的作品。