2010-08-31 121 views
16

我有此刻的PHP的問題,我得到這個錯誤,當我在我的網站上運行的代碼,這部分發生對象無法轉換爲字符串

Object of class stdClass could not be converted to string錯誤,

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

其中誤差是發生這是一項所述的線,

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

而這個行調用此函數,

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

我現在不是真的這個問題是什麼,所以任何幫助將是偉大的。

回答

26

很可能,userdata()函數正在返回一個對象,而不是一個字符串。看看文檔(或var_dump的返回值),找出你需要使用哪個值。

+2

它返回一個對象我怎樣才能解決這個錯誤得到什麼? – 2010-08-31 09:13:12

+2

@sea看看對象具有哪些屬性,例如使用var_dump(),並選擇合適的例如'$ CI-> session-> userdata('user_id') - > username'(「username」是一個例子,我不知道你的情況下有哪些屬性) – 2010-08-31 09:15:28

+0

'var_dump($ var)'做到了。 – George 2017-10-25 12:14:42

1

你在另一個評論中提到你不希望你的get_userdata()函數返回一個stdClass對象嗎?如果是這樣的話,你應該考慮到這一點線在功能:

return $query->row(); 

這裏,CodeIgniter的數據庫對象「$查詢」有其稱爲行()方法返回一個stdClass的。或者,您可以運行row_array(),它以數組形式返回相同的數據。

無論如何,我強烈懷疑這不是問題的根本原因。也許你能給我們更多的細節嗎?玩弄一些事情,讓我們知道它是如何去。我們無法使用您的代碼,因此很難說出發生了什麼。

+0

奇怪的是,返回$ query-> row()來自一個預先編寫的腳本,它不是他的創建。檢查http://www.nelsonwells.net/blog/2010/05/10/creating-a-simple-extensible-codeigniter-authentication-library/ – stef 2010-09-01 07:55:09

3

我用codeignator,我得到了錯誤:

Object of class stdClass could not be converted to string.

這個職位讓我的結果

我在我的模型部分

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

使用,從這個職位,我使用

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

我解決我的問題

0

試試這個

return $query->result_array();