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

プリペアドステートメントは初めてですが、その部分は機能しています。私は読んだ: 準備されたステートメントでクエリを書いた結果セットをページメートします

私のサーバーはPHP5.2.17を使用しているため、get_result()を使用できません。そのため、記事にあるようにアレイを作成しました。var_dumpすることはできますが(クエリに結果が含まれるように)、テーブルに出力したいと思います。クエリを出力するためにさまざまな方法を試しましたが、すべてがこの非オブジェクトエラーに戻っているようです。Webを検索していると、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 に答える