CodeIgniter错误为foreach()提供的参数无效

时间:2013-02-02 21:40:56

标签: php database codeigniter

我正在尝试从datatbase中选择数据,但是我收到了这个错误:

  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

错误是什么意思?

2 个答案:

答案 0 :(得分: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;
    }
}

检查here如何加载模型。

答案 1 :(得分:2)

您正在调用$ query-&gt; result()两次,一次在模型中,一次在循环中,您应该只执行一次。那只是一个错误。

另一个更重要的是你启动模型(并将其设置为变量,这是不需要的,并且是一种不好的做法),并且你不会从模型中调用函数。

首先,您必须在控制器(您的函数或构造中启动模型,如果您打算更频繁地使用此模型):$ this-&gt; load-&gt; model('my_model');

然后你必须访问你想要使用的函数:$ this-&gt; my_model-&gt; my_model_function()