mysql join只返回第一行,它应该是多个

时间:2017-06-15 17:41:45

标签: php mysql codeigniter join codeigniter-3

我正在尝试从两个表,user和meta中检索信息。但是,我只获得第一行而不是所有这些。

用户表看起来像这样

ID | Display Name | Email
1  | Test         | test@test.com

Meta表看起来像这样

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匹配的所有行。

为了让它起作用,我错过了什么?

3 个答案:

答案 0 :(得分: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();

答案 1 :(得分: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();

答案 2 :(得分: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();