【问题标题】:How to get all records from two tables with three joins in CodeIgniter?如何从 CodeIgniter 中具有三个连接的两个表中获取所有记录?
【发布时间】:2016-01-15 12:40:30
【问题描述】:

我有三个表(问题、答案、用户),我想查询用户发布的所有问题和答案。

这是我的代码:

$query = $this->db->select('user.*,questions.*,answers.*')
    ->from('user')
    ->join('questions','questions.user_id = user.u_id','LEFT')
    ->join('answers','answers.user_id = user.u_id','LEFT')
    ->where('user.u_id',$profile[0]['u_id'])
    ->group_by('user.u_id')
    ->get();
echo $query->num_rows();

我的表格中有 1 个已发布的问题和 1 个答案,但是当我尝试此代码时,它只给了我 1 行。

【问题讨论】:

    标签: php mysql codeigniter join


    【解决方案1】:

    您是否尝试过外连接,而不是左连接? 也许即使是左外连接也能解决你的问题,试试吧。

    哦,我想你只是想使用 'row()' 而不是 'num_rows()' 检索所有表的数据。

    $this->db->select('user.*,questions.*,answers.*');
    $this->db->join('questions','questions.user_id = user.u_id','OUTER LEFT');
    $this->db->join('answers','answers.user_id = user.u_id','OUTER LEFT');
    $this->db->where('user.u_id',$profile[0]['u_id']);
    $this->db->group_by('user.u_id')
    $query = $this->db->get('user')->row();
    
    echo $query;
    

    我对你的文字稍作改动,如果你愿意,只需复制并测试它

    【讨论】:

      【解决方案2】:

      用方法试试这个..

      像这样在单行中写下您的查询 $query= "select * from user where" ; 也是(这只是您必须编写查询的查询示例)

      然后

      if ($result = mysqli_query($connection, $query )) {
                  /* fetch associative array */
                  while ($res = mysqli_fetch_assoc($result)) {
                      print_r($res);
                  }
      
                  mysqli_free_result($result);
              }
      

      在这种情况下,$connection 是您的数据库连接

      【讨论】:

      • 我从 1 小时开始尝试,但它不起作用你能解决这个问题吗..?
      • 你试过我的回答了吗
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多