views:

36

answers:

2

I am having a problem with PHP at the moment, I am getting this error,

Object of class stdClass could not be converted to string the error occurs when I run this portion of code in my site,

function myaccount() {
    $data['user_data'] = $this->auth->get_userdata($this->uri->segment(3));
    //var_dump($data['user_data']);
    $this->load->model('users_model');
    $data['user_info'] = $this->users_model->get_user_and_roadmaps_by_id($this->uri->segment(3));
    $this->template->build('users/my_account', $data);
}

The line in which the error is occuring is this one,

$data['user_data'] = $this->auth->get_userdata($this->uri->segment(3));

And this line is calling this function,

   function get_userdata() {

        $CI =& get_instance();

        if(!$this->logged_in()) {
            return false;
        } else {
            $query = $CI->db->get_where('users', array('user_id' => $CI->session->userdata('user_id')));
            return $query->row();
        }
    }

I don't really now what this problem is, so any help would be great.

+1  A: 

Most likely, the userdata() function is returning an object, not a string. Look into the documentation (or var_dump the return value) to find out which value you need to use.

Pekka
it is returning an object how can I get around this error?
sea_1987
@sea look what properties the object has e.g. using var_dump(), and select the approriate one e.g. `$CI->session->userdata('user_id')->username` ("username" being an example, I have no idea which properties exist in your case)
Pekka
A: 

You mentioned in another comment that you aren't expecting your get_userdata() function to return an stdClass object? If that is the case, you should mind this line in that function:

return $query->row();

Here, the CodeIgniter database object "$query" has its row() method called which returns an stdClass. Alternately, you could run row_array() which returns the same data in array form.

Anyway, I strongly suspect that this isn't the root cause of the problem. Can you give us some more details, perhaps? Play around with some things and let us know how it goes. We can't play with your code, so it's hard to say exactly what's going on.

treeface
The weird thing is that return $query->row() comes from a prewritten script, it his not his creation. Check http://www.nelsonwells.net/blog/2010/05/10/creating-a-simple-extensible-codeigniter-authentication-library/
stef