无法 Fetch_Assoc() of Prepared Statement in PHP, 如果使用 Fetch num_rows 变为零
Unable to Fetch_Assoc() of Prepared Statement in PHP, If Fetch is Used num_rows becomes Zero
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']
分配给会话变量。
你的第一个问题是你没有得到结果,我的意思是你错过了 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']
覆盖第一个会话。
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']
分配给会话变量。
你的第一个问题是你没有得到结果,我的意思是你错过了 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']
覆盖第一个会话。