在使用codeigniter时尝试从数据库显示图像时获取错误消息

时间:2018-01-04 18:43:20

标签: php database codeigniter error-handling phpmyadmin

我正在尝试使用codeigniter从我的数据库显示信息,但我一直在发送错误消息。错误消息为Severity: Warning Message: Invalid argument supplied for foreach()

这是我的模特:

class stuffModel extends CI_Model {
    private $stuff_table = 'Stuff';

function __construct()
    {
        parent::__construct();
        $this->load->database();
    }

    public function getItem()
    {
        $un = array();


        $res = $this->db->get($this->stuff_table);
        $results = $res->result();

        return $results;
    }

}

这是我的控制器:

public function displayStuff() {
$STUFF= $this->stuffModel->getItem();

$this->load->view('myView',array('stuff' => $STUFF));
}

这是我的观点:

<?php
foreach ($stuff as $s) {
echo"<h1>".$s['Items']."</h1>";

}?>

错误讯息为Severity: Notice Message: Undefined variable: stuffSeverity: Warning Message: Invalid argument supplied for foreach()

3 个答案:

答案 0 :(得分:0)

没有什么东西对我跳出来,它看起来应该有效。拍摄这个想法有点麻烦。

按如下方式更改控制器

public function displayStuff() 
{
   $data['stuff'] = $this->stuffModel->getItem();
   var_dump($data); //share this output here
   $this->load->view('myView', $data);
}

答案 1 :(得分:0)

您没有将模型加载到控制器中,这就是您无法从控制器调用模型的原因。

首先将模型加载到控制器

$this-load->model('modelName');

而不是打电话

$this->modelName->methodName();

答案 2 :(得分:0)

控制器中的更改

确保模型类的对象在构造函数中声明,如下所示

function showOnChange(self) {
    var allDiv = self.options;
    for(var i = 0; i < allDiv.length; i++){
        document.getElementById(allDiv[i].value).style.display = "none";
    }
    document.getElementById(self.value).style.display = 'block';
}

然后在displayStuff函数中,

$this->load->model('stuffModel', 'stuffModel', TRUE);

模型中的更改

public function displayStuff() {
 $data['stuff']= $this->stuffModel->getItem();    
 $this->load->view('myView',$data);
}

最后在视图中

您可以通过迭代显示存储在数组中的值

public function getItem()
    {
       $res = $this->db->get($this->stuff_table);
        if ($res->num_rows() > 0) {
            return $res->result_array();
        } else {
            return array();
        }

    }