我有一个问题与我准备好的声明,我已经通过堆栈搜索答案,并尝试了很多关闭他们无济于事,我已经检查插入语句是正确的,我也尝试使用声明作为似乎工作,定期声明 我得到的错误是如下Mysqli bind_param错误
Fatal error:call to function bind_param()on a non object in ** on line 23
当我使用一个普通查询第一查询的第二不显示错误
的代码是
public function reg_user($name,$username,$password,$email){
$password = password_hash($password);
$stmt = $this->db->prepare("SELECT uid FROM users WHERE uname= ? OR uemail = ?");
$stmt->bind_param("ss", $username,$email);
$stmt->execute();
$count_row = $stmt->num_rows;
if($count_row == 0){
$stmt = $this->db->prepare("INSERT INTO users (uname,upass,fullname,uemail) VALUES(?,?,?,?)");
$stmt->bind_param("ssss", $username,$password,$name,$email); //line 23
$return = $stmt->execute();
return $return;
} else{
return false;
}
}
你不能同时绑定多个参数。您应该在'execute()'中将它们作为数组传递,或者每次绑定一个参数。前者更模块化,更少冗余 – Terry
错误不能在第23行 - 代码只有15行! –
是的,但它是一个类有更多的线条的一部分,这是毫无意义的发布全班时,这是错误的功能 –