如果我有查询,
SELECT (...) FROM User WHERE Username = (...) AND Password = (...);
并且用户输入无效的用户名是否有办法获取它特别是不正确的用户名?
这样我就可以向用户提供更具体的错误消息,例如“用户不存在”等...
答案 0 :(得分:1)
SELECT COUNT(*) AS `count` FROM `User` WHERE `Username` = ...;
if( $result['count'] < 1 )
{
// no user
}
// repeat for pass.
答案 1 :(得分:0)
如果密码匹配,我会选择用户名,然后选择一个位字段。因此,从WHERE子句中删除密码部分,并将其移动到SELECT子句中。然后,没有匹配的行表示无效的用户名,如果您有一行,则需要检查该字段以查看密码是否匹配。
SELECT (...) IF(password=?, 1, 0) as success
FROM User
WHERE Username = ?
答案 2 :(得分:0)
如果你坚持关于这样做,你可以这样做:
SELECT password FROM user WHERE username = ?
如果找不到记录,则用户名不存在。如果是,您现在可以比较密码。