PHP:无法在prepare语句上打印出mysqli错误

时间:2016-02-15 11:31:53

标签: php mysqli

我遇到以下错误Call to a member function bind_param() on a non-object并且从研究中意识到我需要在我的prepare语句中添加错误检查,因为它可能返回false。

因此我有了这个 - >

 if ($statement = $this ->conn->prepare("INSERT INTO users(name, email, gender, usrDOB, encrypted_password, salt, created_at) VALUES(?,?,?,?,?,?,NOW())")) {
        $statement->bind_param("ssssss", $name, $email, $gender, $usrDOB, $encryptedPassword, $salt);
        $result = $statement->execute();
        $statement->close();

        if ($result) {
            $statement = $this->conn->prepare("SELECT * FROM users WHERE email =?");
            $statement->bind_param("s", $email);
            $statement->execute();
            $user = $statement->get_result()->fetch_assoc();
            $statement->close();
            return $user;
        } else {
            return false;
        }
    }else{
        printf($this->conn->error());
    }

然而,在打印出错误()时似乎有一个错误,因为它表示它没有被定义。

我试过没有$ this的conn,但无济于事。

任何想法?

2 个答案:

答案 0 :(得分:0)

如果语句失败,您可以打印错误:

$statement->execute();
if ($statement->error) {
    var_dump($statement->error);
}

答案 1 :(得分:0)

我通过this url使用答案主题底部附近的错误检查解决了问题。

gradle