在使用 codeigniter 时尝试显示数据库中的图像时收到错误消息
Posted
技术标签:
【中文标题】在使用 codeigniter 时尝试显示数据库中的图像时收到错误消息【英文标题】:Getting error messages when trying to display images from a database while using codeigniter 【发布时间】:2018-06-14 13:25:46 【问题描述】:我正在尝试使用 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: stuff
和Severity: Warning Message: Invalid argument supplied for foreach()
【问题讨论】:
$STUFF
为什么是全大写?从约定的角度来看,它看起来像 (o_O)
【参考方案1】:
什么都没有在我身上跳出来,看起来它应该可以工作。这是一个解决问题的小想法。
如下更改控制器
public function displayStuff()
$data['stuff'] = $this->stuffModel->getItem();
var_dump($data); //share this output here
$this->load->view('myView', $data);
【讨论】:
应该是评论,这不是答案,尽管它会引导他找到他的答案;) 好的,仍然出现错误,但var_dump($data)
显示了什么?
当我添加 var_dump 时,除了错误消息之外什么都没有显示【参考方案2】:
您没有将模型加载到控制器中,这就是您无法从控制器调用模型的原因。
首先将模型加载到控制器中
$this-load->model('modelName');
比打电话
$this->modelName->methodName();
【讨论】:
我早些时候在我的控制器中调用了模型,在这个函数之外我有:function __construct() parent::__construct(); $this->load->model('stuffMdoel'); 如果你在 __construct() 中调用它,它只适用于每个函数,要么你必须将模型加载到每个函数中。 我确实在我的 __constract() 中调用了它,但刚才我也在我的函数中调用了它(所以它被调用了两次)但我仍然遇到同样的错误。 尝试将private $stuff_table = 'Stuff';
更改为 protected $stuff_table = 'Stuff';
而不是再试一次。【参考方案3】:
控制器的变化
确保模型类的对象在构造函数中声明如下
$this->load->model('stuffModel', 'stuffModel', TRUE);
然后在displayStuff函数中,
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();
终于在视图中
您可以通过如下迭代显示存储在数组中的值
foreach($stuff as $stf)
echo $stf['field_name'];
【讨论】:
以上是关于在使用 codeigniter 时尝试显示数据库中的图像时收到错误消息的主要内容,如果未能解决你的问题,请参考以下文章
从 url (codeigniter) 中删除 index.php 时 .htaccess 防止显示文件
在 codeigniter 中使用控制器中的 readfile() 显示图像