0

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

我的代码:

 if($stmt = $dbc->prepare($query)) {
    $stmt->bind_param('s', $search_term);
    $stmt->execute();
    $stmt->bind_result($bookid, $title, $author, $genre, $isbn, $url);

echo '<table><tr>
<th><a href="browse.php?sort=bi">ID</th>
<th><a href="browse.php?sort=t">Title</a></th>
<th><a href="browse.php?sort=a">Author</th>
<th><a href="browse.php?sort=g">Genre</th>
<th>ISBN</th>
<th>URL</th>
</tr>';


 // array to hold all rows 
    $rowset = array(); 

   // All results bound to output vars 
   while ($stmt->fetch()) { 
       // Append an array containing your result vars onto the rowset array 
            $rowset[] = array( 
            'bookid' => $bookid, 
            'title' => $title, 
            'author' => $author, 
           'genre' => $genre,
          'isbn' => $isbn,
          'url' => $url 
           );
    } // End Fetch

    $size = count($rowset);

    for ($i=0; $i <$size; $i++){
            $row = $rowset->fetch_assoc();  // Error is on this line

我是准备好的陈述的新手,但那部分正在工作。我读到: 使用准备好的语句编写查询的分页结果集, .

因为我的服务器有 PHP 5.2.17,所以我不能使用 get_result()。所以我按照文章所说的建立了一个数组。我可以 var_dump 它(所以查询有结果),但我想输出到表中。我尝试了不同的方法来输出查询,一切似乎都回到了这个非对象错误。在网上搜索时,我感到很困惑,因为 OOP 文章涉及的主题比我目前所能做的更高级。所以我希望有人能指出我正确的方向。

预先感谢您提供的任何帮助。

4

2 回答 2

2

错误消息说明了一切。$rowset不是对象,因此没有名为 的成员函数fetch_assoc()

此代码设置$rowset为关联数组的数组。

$rowset = array(); 

// All results bound to output vars 
while ($stmt->fetch()) { 
   // Append an array containing your result vars onto the rowset array 
        $rowset[] = array( 
        'bookid' => $bookid, 
        'title' => $title, 
        'author' => $author, 
       'genre' => $genre,
      'isbn' => $isbn,
      'url' => $url 
       );
} // End Fetch

fetch_assoc()mysqli_result对象的成员函数。(文档在这里。)

由于您已经将数据存储在数组 ( $rowset) 中,因此您可以使用循环遍历每个索引foreach

foreach ($rowset as $row) {
    // do something
}
于 2012-08-07T17:35:22.540 回答
0

构建变量 $rowset 时:

$rowset[] = array(...);

它是数组类型。fetch_assoc() 方法是从数据库返回的 MySqli 或 PDO 结果对象的一部分。

要完成您要执行的操作,请尝试以下操作:

foreach($rowset as $row)
{
   // Do something with $row
}
于 2012-08-07T17:36:35.520 回答