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