0

コントローラ:

$data['result'] = $this->pagination_model->search($searchterm,$limit);

モデル:

public function search($searchterm,$limit)
    {
        $sql = "SELECT * FROM recipe 
                WHERE name LIKE '%" . $searchterm . "%' LIMIT " .$limit . ",2";
        $q = $this->db->query($sql);
        if($q->num_rows() > 0)
        {
            foreach($q->result() as $row)
            {
                $data[] = $row;
            }
            return $data;
        }
        else
        {
            return 0;
        }
    }

foreach ループを使用して結果を出力するとうまくいきますが、テーブル ヘルパーで出力しようとすると、次のようになります。

$this->table->generate($result);<--- $result= コントローラーから。

結果を印刷しようとするとエラーが表示されますが、

致命的なエラー: タイプ stdClass のオブジェクトを C:\www\Finals\system\libraries\Table.php の 178 行の配列として使用できません

そのエリアは制限されているため、データを受け入れない理由がわかりません。テーブル ライブラリに詳しい人なら誰でも、どのタイプのデータ テーブルを受け入れるかを明確にすることができます。

印刷に foreach メソッドを使用することもできますが、ci ヘルパーの学習と使用に熱心です。

編集:追加情報、

コントローラー: ページネーションを使用して db 上のすべてのレコードを単純に一覧表示することから。上記は、検索フィルターが完了したときです。

$data['records'] = $this->db->get('recipe', $config['per_page'], $this->uri->segment(3));

テーブル ヘルパーはデータを受け取り、それを出力します。

$This->table->generate($records); 

返された両方のデータ セットに違いはありますか。

で調べてみますprint_r()

4

1 に答える 1

0

CodeIgniter は結果行を配列ではなくオブジェクトとして返します。ユーザーガイドから:

結果()


この関数は、クエリ結果をオブジェクトの配列として返します。失敗した場合は空の配列を返します。

次の表記を使用してフィールドにアクセスする必要があります。

foreach($q->result() as $row)
{
    $data[] = $row->data;
}

または、代わりに配列が本当に必要な場合は、次を使用できます。

$q->result_array()

連想配列と同じ情報を返します。

于 2013-10-08T20:54:12.887 に答える