2010-08-31 47 views
16

Estoy teniendo un problema con PHP en este momento, estoy recibiendo este error,objeto de la clase stdClass No se pudo convertir a cadena

Object of class stdClass could not be converted to string el error se produce cuando corro esta porción de código en mi sitio,

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); 
} 

la línea en la que el error está ocurriendo es éste,

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

Y esta línea está llamando a esta función,

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(); 
     } 
    } 

Realmente no sé ahora cuál es este problema, entonces cualquier ayuda sería genial.

Respuesta

26

Lo más probable es que la función userdata() devuelva un objeto, no una cadena. Consulte la documentación (o var_dump el valor de retorno) para averiguar qué valor necesita usar.

+2

se está volviendo un objeto, ¿cómo puedo solucionar este error? –

+2

@sea mira qué propiedades tiene el objeto, p. usando var_dump(), y seleccione el apropiado, p. ej. '$ CI-> session-> userdata ('user_id') -> username' (" username "es un ejemplo, no tengo idea de qué propiedades existen en su caso) –

+0

' var_dump ($ var) 'lo hizo. – George

1

Mencionaste en otro comentario que no esperas que tu función get_userdata() devuelva un objeto stdClass? Si ese es el caso, debe importa esta línea en esa función:

return $query->row(); 

En este caso, el objeto de base de CodeIgniter "$ consulta" tiene su método de fila() llamada que devuelve un stdClass. Alternativamente, puede ejecutar row_array() que devuelve los mismos datos en forma de matriz.

De todos modos, sospecho fuertemente que esta no es la causa del problema. ¿Puede darnos más detalles, tal vez? Juega con algunas cosas y cuéntanos cómo funciona. No podemos jugar con su código, por lo que es difícil decir exactamente qué está pasando.

+0

Lo extraño es que return $ query-> row() proviene de un script preescrito, no es su creación. Compruebe http://www.nelsonwells.net/blog/2010/05/10/creating-a-simple-extensible-codeigniter-authentication-library/ – stef

3

utilizo codeignator y me dio el error:

Object of class stdClass could not be converted to string.

para este post me sale mi resultado

que utilizo en mi sección del modelo

$query = $this->db->get('user', 10); 
     return $query->result(); 

y desde este puesto que utilizo

$query = $this->db->get('user', 10); 
     return $query->row(); 

y yo resuelto mi problema

0

probar esto

return $query->result_array(); 
Cuestiones relacionadas