du532861657 2017-06-15 17:41
浏览 90
已采纳

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

I am trying to retrieve information from two tables, user and meta. However, I am only getting the first row instead of all of them.

User table looks like this

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

Meta table looks like this

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

This is my query

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

but I get everything for the user table, but only the first row of the meta table. Trying to get all the rows that match user_id = 1 in the meta table.

What am I missing in order for this to work?

  • 写回答

3条回答 默认 最新

  • dongzhunnai0140 2017-06-16 00:38
    关注

    Did you want to retrieve all result of the query or just the first row?

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

    Getting just one result use: row_array() returns a single result row. If your query has more than one row, it returns only the first row. The result is returned as an array.

    return $query->row_array();
    

    Getting an array of results use: result_array() method returns the query result in pure array

    return $query->result_array();
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 基于单片机的靶位控制系统
  • ¥15 AT89C51控制8位八段数码管显示时钟。
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错