PHP基于两行从数据库中检索不同的数据

时间:2015-12-15 14:25:11

标签: php mysql codeigniter

我的表名为messages,其中包含一些行:

+---------+
| columns |
+---------+
| id      |
| from    |
| to      |
| body    |
| date    |
+---------+

我想要的是检索我发送消息的用户列表或向我发送消息的用户。

public function get_users_m($where)
{
    $this->db->select('*');
    $this->db->from('messages');
    $this->db->where($where); // to = my_id or from = my_id 
    $this->db->group_by('from, to');

    return $this->db->get()->result_array();
}

我是使用Codeigniter制作的,但问题是当我回复时,例如C,我得到A(我)发送消息给CC发送消息给{{ 1}}而且我不希望我只想A一次,因为如果我发送给他的信息不对,或者他是发送给我的那个人并不重要消息它仍然是同一个用户。

2 个答案:

答案 0 :(得分:3)

这个怎么样?

public function get_users_m()
{
    $my_id = 5; # some id
    $this->db->select('*');
    $this->db->from('messages');
    $this->db->where('from == $my_id');
    $this->db->or_where('to == $my_id'); # add this or_where Clause
    $this->db->group_by('user_id');
    $query = $this->db->get();
    $result = $query->result_array();
    return $result;
}

检查Tpojka

的评论

答案 1 :(得分:1)

您正在使用user_id和profile_id。您已经提到哪个字段属于其他用户。是user_id还是profile_id。

让我们考虑其他用户ID是profile_id。

以下查询可以帮助您获得与您回复的不同的profile_id,或者您回复了他们但不回复了他们。

public function get_users_m($where)
    {
        $this->db->select('profile_id');
        $this->db->from('messages');
        $this->db->where('profile_id != your profile id'); 
        $this->db->group_by('profile_id');
        return $this->db->get()->result_array();
    }