在使用 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: stuffSeverity: 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() 显示图像

Codeigniter:如何处理数据库错误?

如何使用codeigniter显示mysql数据透视表数据

显示从控制器传递的表(视图)中的数据 - Codeigniter

当我尝试运行使用 CodeIgniter 编写的项目时出现 Xampp 未知错误