Codeigniter返回非对象

时间:2011-02-07 23:08:26

标签: codeigniter

我经常发生这种情况,我不确定为什么会发生这种情况。这是我模型中的查询:

$query = $this->db->query('SELECT * FROM members WHERE email = "' . $this->session->userdata('email') . '"');
        return $query;

我尝试在我的视图中输出:

foreach($query->result() as $row) {...echo $row->name, etc.}

但是我收到了一个错误:

Fatal error: Call to a member function result() on a non-object ...

我运行了探查器并且我的查询是有效的,并且数据库中有数据要被拉出。那么我做错了什么?

2 个答案:

答案 0 :(得分:3)

试试这个。

在您的模型中:

function get_members()
{
    $query = $this->db->query('SELECT * FROM members WHERE email = "' . $this->session->userdata('email') . '"');
    return $query->result();
}

在你的控制器中:

然后,您应该将控制器中数据库中的数据分配给您的视图。

$data['query'] = $this->yourmodel->get_members(); // Data['query'] will be turned into $query in your view.

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

在您看来:

foreach($query as $row) {...echo $row->name, etc.}

答案 1 :(得分:0)

如果要将$query变量传递给视图,codeigniter会将其转换为键控数组(如果它是对象)。

http://codeigniter.com/user_guide/general/views.html

  

注意:如果使用对象,则类变量将转换为数组元素。

编辑:

在您的控制器中:

$query = // do whatever to get the $query.
$members = array();
foreach($query->result() as $row) {
    $members[] = $row;
}
//send $members to view

在视图中:

foreach($members as $member) {
    echo $member['name']; // etc
}