Mysqli bind_param错误

时间:2016-04-22 11:53:10

标签: php mysqli

我的准备语句有问题,我已经通过堆栈搜索了答案并尝试了许多关闭它们无效,我检查了插入语句是否正确,我也尝试使用该语句作为常规似乎有效的陈述, 我得到的错误如下

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;
        }
    }

1 个答案:

答案 0 :(得分:0)

在第一个$stmt->execute

之后添加这两行代码
$result = $stmt->get_result();
$count_row = $result->num_rows;

您的代码失败的原因是您尝试从Prepared Statement对象而不是Result中获取行数