2010-08-31 22 views
16

Sto avendo un problema con PHP in questo momento, sto ottenendo questo errore,oggetto di classe stdClass non poteva essere convertito in stringa

Object of class stdClass could not be converted to string l'errore si verifica quando si esegue questa porzione di codice nel mio sito,

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 linea in cui l'errore si sta verificando è questa,

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

E questa linea sta chiamando questa funzione,

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

Non davvero ora che cosa questo problema è, in modo che qualsiasi aiuto sarebbe grande.

risposta

26

Molto probabilmente, la funzione userdata() restituisce un oggetto, non una stringa. Cerca nella documentazione (o var_dump il valore di ritorno) per scoprire quale valore devi usare.

+2

sta tornando un oggetto come posso ottenere intorno a questo errore? –

+2

@sea guarda quali proprietà ha l'oggetto, ad es. usando var_dump(), e seleziona l'approriate, ad es. '$ CI-> session-> userdata ('user_id') -> username' ("username" essere un esempio, non ho idea di quale esistono proprietà nel tuo caso) –

+0

' var_dump ($ var) 'lo ha fatto. – George

1

Lei ha citato in un altro commento che non si aspettava la funzione get_userdata() per restituire un oggetto stdClass? Se questo è il caso, si dovrebbe mente questa linea in quella funzione:

return $query->row(); 

Qui, l'oggetto di database CodeIgniter "$ query" ha il suo metodo di fila() chiamata che restituisce uno stdClass. In alternativa, è possibile eseguire row_array() che restituisce gli stessi dati in forma di matrice.

Comunque, ho il forte sospetto che questa non è la causa principale del problema. Puoi darci qualche altro dettaglio, forse? Gioca con alcune cose e facci sapere come va. Non possiamo giocare con il tuo codice, quindi è difficile dire esattamente cosa sta succedendo.

+0

La cosa strana è che return $ query-> row() proviene da uno script pre-scritto, non è la sua creazione. Controlla http://www.nelsonwells.net/blog/2010/05/10/creating-a-simple-extensible-codeigniter-authentication-library/ – stef

3

Io uso codeignator e ho ottenuto l'errore:

Object of class stdClass could not be converted to string.

per questo post ho il mio risultato

posso utilizzare nella mia sezione modello

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

e da questo post io uso

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

e ho risolto il mio problema

0

provare questo

return $query->result_array(); 
Problemi correlati