如果使用Fetch,则无法获取PHP中已准备语句的\u Assoc(),num\u行变为零
测试如果使用Fetch,则无法获取PHP中已准备语句的\u Assoc(),num\u行变为零,php,prepared-statement,Php,Prepared Statement,测试num_row=0,因为结果现在在关联数组中, 当我使用Fetch()时,num_rows正确为1,但我无法访问数组以将$row['username']分配给会话变量。您的第一个问题是没有得到结果,我的意思是您丢失了 你的代码应该是 public function Login($username, $pass){ if(!empty($username) && !empty($pass)){ $user = $this->link->pre
num_row=0
,因为结果现在在关联数组中,
当我使用
Fetch()
时,num_rows
正确为1,但我无法访问数组以将$row['username']
分配给会话变量。您的第一个问题是没有得到结果,我的意思是您丢失了
你的代码应该是
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";
}
}
如果没有正确返回行,为什么要提取
您正在覆盖这里的会话
$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";
}
最后一个会话
$\u会话['name']
正在覆盖第一个会话。只需移动$row=$user->fetch_assoc()在对$user->num_rows
进行测试后,将code>放入if块注意,如果您已经拥有数据,那么向mysqli询问数据计数是没有意义的,只需测试/计数您已经拥有的数据@尼克:我已经移动了$row=$user->fetch_assoc();在if块中,testcount$user->num_rows==1仍然是False@Fjay您是否尝试过打印$user->num\u行的值
?也许它大于1…@Nick,是的,值是0而不是1。应该是一条评论,但没问题。谢谢,第二个会话被删除了,问题是$user->num_rows==1 persistHey@Fjay一个新的答案正在等着你。@Saral,非常感谢,它成功了!!
$_SESSION['name']=$row['username'];
$_SESSION['name']=true;