为什么CI_Session对象中的set_userdata为零索引?

时间:2011-10-30 13:28:17

标签: arrays codeigniter

我正在尝试设置一个自定义的Userdata变量 - 实际上是一个数组。

我根据表单输入查询了MYSQL UserTable,并返回 作为结果的记录_array。

$this->session->set_userdata( 'Login', $ResultofUserMatch );

userdata会话变量的转储如下:

[userdata] => Array
    (
        [session_id] => fda0d4f9a5b90c813b0850fa6e651b20
        [ip_address] => aa.bb.cc.dd
        [user_agent] => Mozilla/5.0 (Windows NT 5.1; rv:7.0.1) Gecko/20100
        [last_activity] => 1319892314
        [Login] => Array
            (
                [0] => Array
                    (
                        [ID] => 802
                        [Care Center Name] => george
                        [w3user] => georgewnyc@mail.com
                        [w3pass] => george
                        [w3code] => none
                        [role] => admin
                    )

            )

    )

请注意,包含Login数组,但数据位于INDEX 0 - 所以他们在登录[0] [角色]。

我做错了吗?如何让数据“上升一级”?

1 个答案:

答案 0 :(得分:1)

当你得到结果集时,你应该调用$query->row()而不是$query->result()来获取结果集中的第一行,result()返回集合中所有结果的数组。

$query = $this->db->select('*')->from('userTable')->get();
$ResultofUserMatch = ($query->num_rows() !== 0 ? $query->row() : false);

if($ResultofUserMatch)
    $this->session->set_userdata( 'Login', $ResultofUserMatch );