致命错误:在非对象上调用成员函数bind_param()

时间:2014-09-08 06:52:17

标签: php slim

我尝试使用PHP和slim框架构建RESTful API Web服务的代码。 (我使用Advanced Rest Client测试此代码)

这是我的代码。

private function isUserExists($email) { $stmt = $this->conn->prepare("SELECT id from users WHERE email = ?"); $stmt->bind_param("s", $email); $stmt->execute(); $stmt->store_result(); $num_rows = $stmt->num_rows; $stmt->close(); return $num_rows > 0; }

然后我收到了这个错误。

  

致命错误:在第113行的非对象上调用成员函数bind_param()

第113行是:$stmt->bind_param("s", $email);

自2周前以来,我一直在寻找这个问题的解决方案。

先谢谢你们:))

1 个答案:

答案 0 :(得分:1)

问题出在$this->conn->prepare,它没有像你期望的那样返回一个对象。

对于mysqli,prepare()出错时返回FALSE。您可以使用$this->conn->error检查错误消息。

此代码应在出现故障时打印您的错误:

private function isUserExists($email) {
    $stmt = $this->conn->prepare("SELECT id from users WHERE email = ?");
    if ($stmt === FALSE){
        die($this->conn->error);
    } else  {
        $stmt->bind_param("s", $email);
        $stmt->execute();
        $stmt->store_result();
        $num_rows = $stmt->num_rows;
        $stmt->close();
        return $num_rows > 0;
    }
}