2017-06-15 43 views
0

我想從兩個表,用戶和元檢索信息。但是,我只獲得第一行而不是全部。mysql連接只返回第一行時,它應該是多個

用戶表看起來像這樣

ID | Display Name | Email 
1 | Test   | [email protected] 

元表看起來像這樣

meta_id | user_id | meta_key | meta_value 
123  | 1  | address | 123 somewhere 
123  | 1  | city  | Metropolis 

這是我的查詢

$query = $this->db->from('users as u'); 
$query = $this->db->join('meta as m', 'u.ID = m.user_id'); 
$query = $this->db->where('ID', $data['ID']); 
$query = $this->db->get(); 

return $query->row_array(); 

,但我得到一切爲了用戶表,但只元表的第一行。嘗試獲取元表中與user_id = 1匹配的所有行。

我錯過了什麼才能使其工作?

回答

1

你想檢索查詢的所有結果或只是第一行嗎?

$query = $this->db->from('users as u'); 
$query = $this->db->join('meta as m', 'u.ID = m.user_id'); 
$query = $this->db->where('ID', $data['ID']); 
$query = $this->db->get(); 

獲取只有一個結果使用: row_array()返回一個結果行。如果你的查詢有多行,它只返回第一行。結果作爲數組返回。

return $query->row_array(); 

獲得結果的一個陣列使用: result_array()方法返回查詢結果在純陣列

return $query->result_array(); 
+0

result_array正是我所需要的,現在來解析數組:p – JonYork

0

試試這個。希望它有幫助

$this->db->select('u.*, m.*'); 
$this->db->from('users as u'); 
$this->db->join('meta as m', 'u.ID = m.user_id'); 
$this->db->where('u.ID', $data['ID']); 
$query = $this->db->get(); 

return $query->row_array(); 
+0

快到。現在我從第二個表「meta_key」和「meta_value」獲取兩個變量。我該如何保存它,以便對於第1行,Address變成了變量,meta_value是它的值? – JonYork

+0

如果你只想要「meta_key」和「meta_value」,那麼就使用$ this-> db-> select('m.meta_key,m.meta_value') –

+0

如果你只需要一行,然後返回$ query-> row ()。你只會得到第一行 –

0
$this->db->reset_query();  
$this->db->select("*"); 
$this->db->from('user'); 
$this->db->join('meta', 'user.id = meta.id '); 
$this->db->where('user.id="'. $data['ID'].'"'); // where conditions 
$query = $this->db->get(); 
return $query->result(); 
相關問題