如何从CodeIgniter中的三个连接的两个表中获取所有记录?

时间:2015-10-16 17:08:28

标签: php mysql codeigniter join

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

这是我的代码:

$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个答案,但是当我尝试这个代码时,它只给我一行。

2 个答案:

答案 0 :(得分:0)

尝试使用方法..

像这样用单行写你的查询 $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 :(得分:0)

您是否尝试过外连接,而是左连接? 也许甚至是左外连接,解决了你的问题,试试吧。

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

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

我改变了一点你的写作,如果你想要的话,只需复制和测试