0

如果我有疑问,

SELECT (...) FROM User WHERE Username = (...) AND Password = (...);

并且用户输入了无效的用户名,有没有办法确定它是不正确的用户名?

这样我就可以向用户提供更具体的错误消息,例如“用户不存在”等......

4

3 回答 3

1
SELECT COUNT(*) AS `count` FROM `User` WHERE `Username` = ...;

if( $result['count'] < 1 )
{
  // no user
}

// repeat for pass.
于 2012-08-29T19:17:58.043 回答
0

如果密码匹配,我会选择用户名,然后选择一个位字段。所以从 WHERE 子句中删除密码部分,并将其移动到 SELECT 子句中。然后,没有匹配的行意味着用户名无效,如果有一行,则需要检查该字段以查看密码是否匹配。

SELECT (...) IF(password=?, 1, 0) as success
FROM User
WHERE Username = ? 
于 2012-08-29T19:18:47.677 回答
0

如果你坚持这样做,你可以这样做:

SELECT password FROM user WHERE username = ?

如果没有找到记录,则用户名不存在。如果是这样,您现在可以比较密码。

于 2012-08-29T19:19:35.260 回答