2010-08-31 51 views
16

Je suis un problème avec PHP en ce moment, je reçois cette erreur,objet de la classe stdClass ne pouvait pas être convertie en chaîne

Object of class stdClass could not be converted to string l'erreur se produit lorsque je lance cette partie de code dans mon 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); 
} 

la ligne où l'erreur est INTERVENUES est celui-ci,

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

Et cette ligne appelle cette fonction,

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

Je ne sais pas vraiment ce qu'est ce problème, donc toute aide serait géniale.

Répondre

26

Très probablement, la fonction userdata() renvoie un objet, pas une chaîne. Regardez dans la documentation (ou var_dump la valeur de retour) pour savoir quelle valeur vous devez utiliser.

+2

il retourne un objet comment puis-je contourner cette erreur? –

+2

@sea regarde quelles propriétés l'objet a par ex. en utilisant var_dump(), et sélectionnez l'un approprié par exemple. '$ CI-> session-> userdata ('user_id') -> nom d'utilisateur' (" nom d'utilisateur "étant un exemple, je n'ai aucune idée des propriétés qui existent dans votre cas) –

+0

' var_dump ($ var) 'l'a fait. – George

1

Vous avez mentionné dans un autre commentaire que vous ne vous attendez pas à ce que votre fonction get_userdata() renvoie un objet stdClass? Si tel est le cas, vous devriez l'esprit cette ligne dans cette fonction:

return $query->row(); 

Ici, l'objet de base de données CodeIgniter « $ query » a sa méthode ligne() appelée qui retourne un stdClass. Alternativement, vous pouvez exécuter row_array() qui renvoie les mêmes données sous forme de tableau.

Quoi qu'il en soit, je soupçonne fortement que ce n'est pas la cause du problème. Pouvez-vous nous donner plus de détails, peut-être? Jouez avec certaines choses et dites-nous comment ça se passe. Nous ne pouvons pas jouer avec votre code, il est donc difficile de dire exactement ce qui se passe.

+0

La chose étrange est que return $ query-> row() vient d'un script pré-écrit, ce n'est pas sa création. Vérifiez http://www.nelsonwells.net/blog/2010/05/10/creating-a-simple-extensible-codeigniter-authentication-library/ – stef

3

J'utilise codeignator et je suis l'erreur:

Object of class stdClass could not be converted to string.

pour ce post, je reçois mon résultat

-je utiliser dans ma section modèle

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

et de ce post, je l'utilise

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

et je résolu mon problème

0

essayer cette

return $query->result_array();