2017-02-02 41 views
0

我正在使用codeigniter,並且我做了一個函數來返回用戶的名稱。下面是代碼:試圖獲取非對象php變量的屬性

$this->db->where('u_id', $id); 
$query = $this->db->get('users'); 
$data = $query->result_array(); 

$string = $data->u_name.' '.$data->u_surname; 

return $string; 

當我使用這個功能,我得到這個錯誤:

Message: Trying to get property of non-object and recall the line with $string = [...]

+0

您要求的數組('[]'),但你要訪問它作爲一個對象(' - >') – Darren

回答

0

使用foreach循環:

foreach ($data as $row) 
{ 
    echo $string = $data['u_name'].' '.$data['u_surname']; 
} 
+0

它的工作原理,我改變$數據到$行。但爲什麼? –

+0

result_array()方法將查詢結果作爲純數組返回,或在未產生結果時返回空數組。通常你會在foreach循環中使用它。 @TomaszChwicewski – mith

+0

請參閱:https://www.codeigniter.com/userguide3/database/results.html @TomaszChwicewski – mith

0

你可以嘗試像this.In笨, row()以對象形式根據您的條件返回匹配的第一行。

$this->db->where('u_id', $id); 
$query = $this->db->get('users'); 
$data = $query->row();//change here 

$string = $data->u_name.' '.$data->u_surname; 

//echo $string; 
return $string; 

更多看到Codeigniter Result Sets

0

試試這個代碼返回

$this->db->select('*'); 
$this->db->from('users'); 
$this->db->where(array('u_id'=>$id)); 
$query=$this->db->get(); 
if($query->num_rows()()>0) 
{ 
$data = $query->result(); 
return $data->u_name.' '.$data->u_surname; 

} 
0

這是因爲你選擇的功能爲你查詢產生的結果。

$data = $query->result_array(); 

result_array()返回數組的結果,即使你只有一個結果,所以當你嘗試$數據 - > u_name例如,你因爲數組不具有財產有這樣的錯誤。您可以對$ data執行foreach並執行您的邏輯或使用其他方法從查詢中獲取結果,例如$ query-> row_array();您可以使用$ query-> row_array

採取笨文件一看:Generating Query Results

相關問題