0

メッセージが表示されます:

PHP エラーが発生しました

重大度: 通知

メッセージ: 未定義の変数: クエリ

ファイル名: views/main.php

ライン番号: 12

これは私のコントローラのコードです:

function get_all(){
    $this->load->model('book_model');
    $this->load->library('table');
    $this->load->helper('html');

    $data['query'] = $this->books_model->books_getall();
    $this->load->view('main', $data);
}

そして、これは私の見解です:

<h1> List of books in library</h1>
<table border="1"/>
<tr>
    <th>ID</th>
    <th>Title</th>
    <th>Author</th>
    <th>Information</th>
    <th>Publisher</th>
    <th colspan="2">Action</th>
</tr>
<?php
if(is_array($query)){

foreach ($query as $row){

echo "<tr>";
echo "<td>".$row->id."</td>";
echo "<td>".$row->title."</td>";
echo "<td>".$row->author."</td>";
echo "<td>".$row->information."</td>";
echo "<td>".$row->publisher."</td>";
echo "<td>".anchor('book/input'.$row->id,'Edit')."</td>";
echo "<td>".anchor('book/delete'.$row->id,'Delete')."</td>";
echo "</tr>";
}
}
?>
</table>

助けてくれてありがとう

編集:これは私のモデルコードです:

function get_all(){

$this->load->database();
$query = $this->db->get('books');
return $query->result(); 

}

4

1 に答える 1

0

私が見る限り、12 行目は次の行のようです。

if(is_array($query)){

エラーメッセージは、$query が定義されていないことを示しています。$data['query'] をビューに渡すと、それが $query になります。

あなたのモデルも $query->result() を返していることに注意してください。これは正しくありません。結果をループするには、ループ内で result() を使用する必要があります。次の例のように、num_rows() を使用して 0 個を超える結果をテストできます。

モデル

function example()
{
    $query = $this->db->get('books');
    return $query;
}

コントローラ

$this->load->model('book_model');
$this->load->library('table');
$this->load->helper('html');

$data['query'] = $this->books_model->books_getall();
$this->load->view('main', $data);

意見

if($query->num_rows() > 0)
{
    foreach($query->result() as $row)
    {
        // Do stuff here on each $row
    }
}

CodeIgniter のドキュメント のこの部分をご覧になることをお勧めします。これは実際には非常に優れています。

于 2013-03-18T19:02:33.867 に答える