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

时间:2016-02-28 21:25:21

标签: php mysql oop mysqli

我一直在用我的代码得到这个错误,我正在使用MYSQLi,并且已经将$ db变量声明为一个全局变量,用于所有其他文件而没有任何问题 - 这让我感到困惑,因为我一直以这种方式完成我的应用程序,没有任何问题:

PHP Fatal error:  Call to a member function fetch_assoc() on a non-object

然而,它在实际页面上输出没有任何问题,我已经检查了其他答案,似乎没有解决方案。

这是我的代码:

<?php $q = $db->query("SELECT * FROM users");
  while($user = $q->fetch_assoc()){ ?>
    <tr id="user-<?php echo $user['id']; ?>" class="user-row">
      <td class="user-avatar"><img src="<?php echo $user['avatar']; ?>" draggable="false"></td>
      <td class="user-username"><?php echo $user['username']; ?></td>
      <td class="user-fullname"><?php echo $user['full_name']; ?></td>
      <td class="user-email"><?php echo $user['email']; ?></td>
      <td class="user-role"><?php $role_id = $user['role_id']; $q = $db->query("SELECT name FROM cg_staffRoles WHERE id = '$role_id'")->fetch_array(MYSQLI_ASSOC); echo $q['name']; ?></td>
      <td class="user-userdelete"><button class="user-delete clear-btn" data-user-id="<?php echo $user['id']; ?>"><i class="lnr lnr-trash"></i></button></td>
    </tr>
  <?php } ?>

这是我的var_dump(),我没有看到任何错误?

object(mysqli_result)#3 (5) {
  ["current_field"]=>
  int(0)
  ["field_count"]=>
  int(17)
  ["lengths"]=>
  NULL
  ["num_rows"]=>
  int(1)
  ["type"]=>
  int(0)
}

1 个答案:

答案 0 :(得分:0)

如果我没有错,

fetch_assoc()适用于mysqli。

在PDO中我们这样做:

$stmt = $db->query("SELECT * FROM users");
while($row = $stmt->fetch(PDO::FETCH_ASSOC))
{

}