2009-10-16 60 views
1

我试图使用get_where来获取所有者等于登录用户的所有数据库记录的列表。CodeIgniter get_where

这是我的功能在我的控制器;

function files() 
{ 
    $owner = $this->auth->get_user(); 

    $this->db->get_where('files', array('owner =' => '$owner'))->result(); 
} 

而在我看来,我有以下;

<?php foreach($query->result() as $row): ?> 

    <span><?=$row->name?></span> 

<?php endforeach; ?> 

当我尝试访问视图,我得到的致命错误:调用一个成员函数结果()一个非对象在/views/account/files.php第1行

想知道是否有人对此有何看法?

感谢

回答

17

笨是基于MVC原则框架。因此,您通常会将应用程序逻辑,数据抽象和“输出”分离到各自的CodeIgniter使用区域。在这种情况下:控制器,模型和视图。

仅供参考,您通常应将“数据”代码作为模型函数,在本例中为get_where功能。我强烈建议您阅读所提供的User Guide以掌握CodeIgniter,它应该通过大多数步骤握住你的手。请参阅:目录(右上)。

TL; DR

解决你的问题,你需要确保你通过你的看法通过控制变量:

function files() 
{ 
    $owner = $this->auth->get_user(); 

    $data['files'] = $this->db->get_where('files', array('owner =' => '$owner'))->result(); 

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

并确保使用正确的变量在观点:

<?php foreach($files as $row): ?> 

    <span><?=$row['name']; ?></span> 

<?php endforeach; ?> 
4
<?php foreach($query->result() as $row): ?> 

    <span><?=$row->name?></span> 

<?php endforeach; ?> 

雷姆像这样的结果函数。

<?php foreach($query as $row): ?> 

    <span><?=$row->name?></span> 

<?php endforeach; ?> 

Btw。在返回结果之前测试查询的结果是一个好主意。

function files() 
{ 
    $owner = $this->auth->get_user(); 

    $query = $this->db->get_where('files', array('owner =' => '$owner'))->result(); 

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