调用成员函数fetch\u assoc()时出现致命错误-为什么fetch\u assoc()不起作用?

qhhrdooz  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(319)

下面是错误操作。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\u 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\u assoc()问题,我是初学者…谢谢你的帮助:)

1dkrff03

1dkrff031#

在尝试获取结果之前,必须执行查询。通常是用 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() 在本例中返回not false),在出现错误的情况下-以某种方式获取错误消息 mysqli_errno() 例如。更多信息(像往常一样)在手册中。

相关问题