繁体   English   中英

为foreach()提供的未定义变量和无效参数

[英]Undefined variable and Invalid argument supplied for foreach()

我正在努力学习codeigniter ,我在这里codeigniter问题。 在视图上为foreach()提供了未定义的变量和无效参数。 这是代码:

型号(Model_Users.php):

class Model_users extends CI_Model {

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

    function getFirstNames(){
        $query = $this->db->query('SELECT firstname FROM users');

        if($query->num_rows() > 0) {
            return $query->result();
        } else {
            return NULL;
        }
    }

    function getUsers(){

        $query = $this->db->query('SELECT * FROM users');

        if ($query->num_rows() > 0) {
            return $query->result();
        } else {
            return NULL;
        }
    }
}

控制器(welcome.php):

class Welcome extends CI_Controller {

    public function index()
    {
        $this->home();
    }

    public function home()
    {
        $this->load->model('model_users');

        $data['title'] = 'MVC Cool Title';
        $data['page_header']='Intro to MVC Design';
        $data['firstnames'] = $this->model_users->getFirstNames();

        $data['users'] = $this->model_users->getUsers();

        $this->load->view('welcome_message',$data);
    }
}

查看(Welcome_message.php):

<div id="container">
    <h1><?php echo $page_header ?></h1>

    <div id="body">
        <?php
            foreach ($firstnames as $object) {
                echo $object->firstname .'<br/>';
            }
            echo '<br/><hr/><br/>';

            foreach ($users as $object){
                echo $object->firstname . '\'s email address is'. $object->email . '<br/>';
            }
        ?>
    </div>

    <p class="footer">Page rendered in <strong>{elapsed_time}</strong> seconds</p>
</div>

请帮我解决我的代码有什么问题?

首先检查值返回任何值或不在控制器使用中写入此代码

var_dump($firstnames) ; var_dump($users) ;

我认为没有数据从模型返回检查表中的任何数据谢谢

您可以使用return [];消除错误return []; 而不是return null; 而不是在每个foreach调用中检查该情况,因为根据提供的代码,您的用户表似乎是空的。

修改您的模型函数,如下所示

function getFirstNames(){
    $query = $this->db->get('users')->row()->firstname;

    if($query->num_rows() > 0) {
        return $query->result_array();
    } else {
        return NULL;
    }
}

function getUsers(){


    $query = $this->db->get('users');
    if ($query->num_rows() > 0) {
        return $query->result_array();
    } else {
        return NULL;
    }
}

希望这会有所帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM