1

データベースからデータを選択しようとしていますが、次のエラーが発生します。

  A PHP Error was encountered        
    Severity: Warning
    Message: Invalid argument supplied for foreach()
    Filename: controllers/hello.php
    Line Number: 24

コントローラ:

<?php
    // system/application/controllers/hello.php

    class Hello extends CI_Controller {

       public function __construct()
       {
            parent::__construct();
       }

       function show_data() {

            $query = $this->load->model('user');
            foreach ($query->result() as $value) {
                echo $value -> username;
                echo $value -> password;
                echo $value -> first_name;
                echo $value -> last_name;
            }
       }
    }
?>

モデル:

class User extends CI_Model {

    function __construct()
    {
        // Call the Model constructor
        parent::__construct();
    }

    function show()
    {
        $query = $this->db->get('user', 10);
        return $query->result();
    }
}

私はこのチュートリアルを見ています: https://www.codeigniter.com/user_guide/database/results.html

エラーの意味は何ですか?

4

2 に答える 2

4

あなたのコントローラー機能は、

function show_data() {
    $this->load->model('user');
    $query = $this->user->show();
    foreach($query as $value) {
        echo $value->username;
        echo $value->password;
        echo $value->first_name;
        echo $value->last_name;
    }
}

モデルの読み込み方法については、こちらをご覧ください。

于 2013-02-02T21:50:26.823 に答える
2

$query->result() をモデルで 1 回、ループで 1 回、2 回呼び出していますが、1 回だけ実行する必要があります。それはたった1つの間違いでした。

もう 1 つの重要な点は、モデルを開始し (変数に割り当てますが、これは不要であり、悪い習慣です)、モデルから関数を呼び出さないことです。

したがって、最初にコントローラーでモデルを開始する必要があります (このモデルをより頻繁に使用する場合は、関数またはコンストラクトで): $this->load->model('my_model');

次に、使用する関数にアクセスする必要があります: $this->my_model->my_model_function()

于 2013-02-02T21:46:34.777 に答える