2017-06-15 44 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(); 
相关问题