Codeigniter函数数组始终返回no

时间:2013-11-04 23:16:54

标签: php arrays database codeigniter

相当无趣的问题。给出以下代码:

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

的列

3 个答案:

答案 0 :(得分:0)

它没有在数组中插入值,因此请更改:

$array = $row->group_id;

$array[] = $row->group_id;

答案 1 :(得分: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();

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

答案 2 :(得分: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';

        }
    }

感谢回复的人,我希望这有助于其他人犯下愚蠢的错误:)