0

相当愚蠢的问题。给定以下代码:

public function in_group($group)
    {
        $session = $this->CI->session->userdata('logged_in');
        $query = $this->CI->db->get_where('people_groups', array('people_id' => $session['user_id']));
        $array = array();
        foreach ($query->result() as $row)
        {
           $array = $row->group_id;

        }
        if ( $array == $group)

        {
            return 'YES';
        }
        return 'no';

}

结果总是否定的,而实际上根据数据库应该是肯定的。

我要做的是检查 people_groups 表以查看当前用户是否在请求中$group。我对如何以下列方式使用数组进行了研究,但我担心我做了一些相当愚蠢的事情。

注意:$group_id引用表中存储组 ID 的列

4

3 回答 3

0

它不是在数组中插入值,所以改变这个:

$array = $row->group_id;

$array[] = $row->group_id;
于 2013-11-04T23:30:17.733 回答
0

您只需更改查询以选择具有该用户和组 ID 的行的位置,如下所示:

$this->CI->db->select('*');
$this->CI->db->from('people_groups');
$this->CI->db->where('people_id', $session['user_id']);
$this->CI->db->where('group_id', $group);
$query = $this->CI->db->get();

然后你可以只检查是否有结果,而不是循环遍历所有结果。

于 2013-11-04T23:32:11.867 回答
0

我发现我错过了用户指南中的一部分来实现我想要的正确代码应该是:

public function in_group($group)
    {
        $session = $this->CI->session->userdata('logged_in');
        $query = $this->CI->db->get_where('people_groups', array('people_id' => $session['user_id']));

        foreach ($query->result_array() as $row)
        {
            if ( $row['group_id'] == $group)

            {
                return 'YES';
            }
            return 'no';

        }
    }

感谢回复的人,我希望这可以帮助其他人犯愚蠢的错误:)

于 2013-11-04T23:36:21.363 回答