我正在编写一个简单的PHP登录脚本,但是在mysql查询中遇到了一些问题。 auth表的结构如下所示:
username attribute value
userA password 123456
userA status active
userB password 987654321
userB status active
这个结构看起来很愚蠢,但我必须保持这样的结构。
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$sql="select username, value from authtable where (attribute <=> 'password')";
$result=mysql_query($sql);
$myusername = $result['username'];
$mypassword = $result['value'];
$count=mysql_num_rows($result);
以下是结果的处理:
if($count==1){
session_register("myusername");
session_register("mypassword");
header("location:manager.php");
}
else {
echo "Login failed";
}
但是这个脚本总是返回登录失败,但我提供了正确的用户名和密码。
有人可以指出问题所在吗? 非常感谢。
答案 0 :(得分:0)
select username, value from authtable where (attribute <=> 'password')
将为您提供与用户一样多的记录。
您忘了指定所需的用户。
SELECT `username`, `value`
FROM `authtable`
WHERE `attribute` <=> 'password'
AND `username` = '{$myusername}'
答案 1 :(得分:0)
表格如下:
username password status
userA 123456 active
userA 987654321 active
和sql一样:
select username, value from authtable where (password = ? and username = ?)