Codeigniter根据id返回用户名

时间:2011-07-23 20:34:53

标签: php mysql function codeigniter

如果已知用户的唯一ID,我创建了一个帮助用户返回用户名。

if ( ! function_exists('get_username'))
{
    function get_username($user_id)
    {
        $ci=& get_instance();
        $ci->load->database(); 

        if (empty($user_id))
        {
            return FALSE;
        }

        $ci->db->select('username');
        $ci->db->where('id', $user_id);
        $ci->db->where('activated', 1);
        $ci->db->where('banned', 0);
        $ci->db->limit(1);
        $query = $ci->db->get('users');

        if ($query->num_rows() > 0) //if user exists
        {
            $row = $query->row();
            return $row->username;
        }
        else
        {
            return FALSE;
        }
    }
}

如果我尝试的话,这在我的视图中有效:

echo get_username($this->uri->segment(3)); //uri segment 3 is a user id. 

但是想通过控制器将用户名发送到我的视图。我在我的控制器中尝试了以下内容:

function write_message($user_id = '') //function parameter is 3rd uri segment
{
    $data['username'] = get_username($user_id);
    $this->load->view('my_view', $data);
}

然后在我看来我有

echo $username回复array而不是用户名。我在这里做错了什么?

2 个答案:

答案 0 :(得分:1)

您的标准应该清楚,并且我认为usrname应该是唯一的,所以......

if ($query->num_rows() == 1) //if user exists, and unique
{
    $res = $query->result_array();
    return $res[0]['username'];
}
else
{
    return FALSE;
}

答案 1 :(得分:0)

在我的视图中使用<pre>print_r($username)</pre>(由Alfonso建议)很容易发现问题,在我的视图中是另一个数组的相同变量名。正确的答案是给予我的帮助者或阿方索的好建议/输入的任何人,如果他提交他的帖子作为答案。