我对我准备好的语句有问题,我已经在堆栈中搜索了答案并尝试了许多无济于事,我已经检查了正确的插入语句,我也尝试将该语句用作似乎有效的常规语句,我得到的错误如下
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;
}
}
在第一个$stmt->execute
之后添加这两行代码
$result = $stmt->get_result();
$count_row = $result->num_rows;
代码失败的原因是您尝试从 Ready 语句对象而不是 Result 中获取行数