public function Login($username, $pass){
if(!empty($username) && !empty($pass)){
$user = $this->link->prepare("SELECT username, pass FROM users WHERE username=? AND pass=?");
$user->bind_param("ss", $username, $pass);
$user->execute();
$row=$user->fetch_assoc();
If($user->num_rows==1){
session_start();
$_SESSION['name']=$row['username'];
$_SESSION['name']=true;
header("Location: admin.php");
}else{
echo "Invalid Username and Password";
}
}else{
echo "Empty Login Details";
}
}
num_row = 0
的测试,因为结果现在在关联数组中,
当我使用Fetch()
时,num_rows
正确为1,但是我无法访问该数组以将$row['username']
分配给会话变量。
答案 0 :(得分:1)
您的第一个问题是您没有得到结果,我的意思是您缺少mysqli_stmt::get_result。
您的代码应该是
$user->bind_param("ss", $username, $pass);
$user->execute();
$result = $user->get_result();
if($result->num_rows === 1){
$row = $result->fetch_assoc()
$_SESSION['name']=$row['username'];
header("Location: admin.php");
}else{
echo "Invalid Username and Password";
}
如果没有返回正确的行,为什么要提取?
您正在此处覆盖会话
$_SESSION['name']=$row['username'];
$_SESSION['name']=true;
最后一个会话$_SESSION['name']
覆盖了第一个会话。