【问题标题】:query returns empty even though it should return a result查询返回空,即使它应该返回结果
【发布时间】:2014-06-04 21:08:24
【问题描述】:

我正在尝试查询与填写的用户名匹配的人的密码。但是,这不起作用!出于某种原因,适用于一个帐户的相同查询不适用于另一个帐户。我已确保我没有在查询或用户名中输入任何拼写错误,并且我确定我搜索的用户名存在。

示例:
SELECT password FROM users WHERE username = 'admin'
这给了我管理员帐户的密码。
SELECT password FROM users WHERE username = 'user'
这没有任何结果,也没有语法错误。我确定我的数据库中有一个“用户”。

我做错了什么?

【问题讨论】:

  • 你能显示 db-table 吗?
  • 显然没有。可能插入user时有空格什么的,试试LIKE搜索或修剪
  • 没有空格。我使用了与“admin”完全相同的查询。我唯一改变的是管理员到用户。
  • 如果Hadi的查询有效,肯定有一些字符,空格或一些不干净的东西,在保存用户名之前尝试trim($var)
  • 尽管使用了 trim() 我仍然有同样的问题。 $passwordQuery = trim("SELECT password FROM users WHERE username = '$username'"); $checkPassword = mysql_query($passwordQuery); $res = mysql_fetch_array($checkPassword) or die("指定结果失败!"); print_r($res); print_r 为空。

标签: php mysql database


【解决方案1】:

也许有用户名'user'的记录值有这样的空间'user'或'user' 所以编辑记录并确保没有添加空格,或者你可以这样做

 SELECT password FROM users WHERE username like '%user%'

检查记录是否存在。

或者这个

 SELECT password FROM users where trim(username)='user'

【讨论】:

  • 这个查询有效。它给了我正确的密码,但是当有更多用户的用户名看起来像 user 时,这种方法会起作用吗?
  • @user3546193:我建议您使用SELECT HEX(username) FROM users WHERE username LIKE '%user%' 来了解username 真正包含的值,因为它不是'user'
  • @user3546193:嗯,很明显,如果username 包含' user',那么username = 'user' 将是错误的。
  • 试试这个“SELECT password FROM users where trim(username)='user'”
  • 没有你的数据库中的字段包含空格而不是你给 where 子句的参数(:
猜你喜欢
  • 2016-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-18
  • 2021-11-20
  • 2019-10-13
相关资源
最近更新 更多