sehummel
sehummel

Reputation: 5568

Codeigniter returning non-object

I have this happen all the time and I'm never quite sure why it's happening. Here is the query in my model:

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

I try to output this in my view with:

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

But I get an error:

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

I ran the profiler and my query is valid and there is data in the database to be pulled. So what am I do wrong?

Upvotes: 0

Views: 2062

Answers (2)

Dwayne Charrington
Dwayne Charrington

Reputation: 6622

Try this.

In your model:

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

In your controller:

You should then be assigning the data from the database in your controller to your view like so.

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

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

In your view:

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

Upvotes: 3

Finbarr
Finbarr

Reputation: 32126

If you are passing the $query variable to the view, codeigniter will convert it into a keyed array if it is an object.

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

Note: If you use an object, the class variables will be turned into array elements.

Edit:

In your controller:

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

In view:

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

Upvotes: 0

Related Questions