调用成员函数fetch_assoc()的致命错误 - 为什么fetch_assoc()不起作用?

时间:2018-01-06 16:18:43

标签: php mysql json android-studio mysqli

这是错误DbOperations。 php代码:

public function getUserByUserid($user_id){
    $stmt = $this->con->prepare("SELECT * FROM mydb.User WHERE user_id = ?" );
    $stmt->bind_param("s", $user_id);
    return $stmt->get_result()->fetch_assoc();
}

在另一个userLogin.php中,我在这里使用getUserByUserid($ user_id):

if($db->userLogin($_POST['user_id'], $_POST['password'])){
    $user = $db->getUserByUserid($_POST['user_id']);
    $response['error'] = false;
    $response['user_id'] = $user['user_id'];
    $response['name'] = $user['name'];
    $response['contact_no'] = $user['contact_no'];
    $response['email'] = $user['email'];
    $response['role'] = $user['role'];

这是错误消息:

<b>Fatal error</b>:  Call to a member function fetch_assoc() on a non-object in
<b>C:\xampp\htdocs\Android\includes\DbOperations.php</b> on line
<b>41</b>
<br />

第41行是:return $stmt->get_result()->fetch_assoc();

不确定fetch_assoc()问题是什么,我是初学者...感谢您的帮助:)

1 个答案:

答案 0 :(得分:0)

在尝试获取结果之前,必须执行查询。通常用execute完成:

public function getUserByUserid($user_id){
    $stmt = $this->con->prepare("SELECT * FROM mydb.User WHERE user_id = ?" );
    $stmt->bind_param("s", $user_id);
    // Executing a query
    $stmt->execute();

    return $stmt->get_result()->fetch_assoc();
}

更进一步,您可以检查您的执行是否成功完成(在这种情况下get_result()返回而不是 false)并且在出现错误的情况下 - 以某种方式获取mysqli_errno()的错误消息例。 manual中的更多信息(通常)。