从模型返回值

时间:2014-08-03 07:44:45

标签: php codeigniter

只想从我的数据库中获取user_id并通过Codeigniter将其设置为会话。问题是,当我打印会话时,我可以看到以下结果:

(
  [0] => stdClass Object
   (
     [user_id] => 5
   )
) 

而不是这一个:

 [user_id] => 5

您能帮我从模型中返回值,以便不会出现问题。

这是我的模特:

public function get_user_id() {

    $this->db->select('user_id');
    $this->db->from('users');   
    $this->db->where('email',$this->input->post('email'));      
    $query = $this->db->get();

    if ($query->num_rows() == 1) {      
    return $query->result();
    }
    else{
     return false;
    }       
}

这是我的控制器:

$user_id = $this->model_users->get_user_id();
$data = array (     
        'user_id' => $user_id,
        'logged_in' => 1        
              );
$this->session->set_userdata($data);

2 个答案:

答案 0 :(得分:1)

请尝试row()代替result(),因为您只想检索一行。

public function get_user_id() {

    $this->db->select('user_id');
    $this->db->from('users');   
    $this->db->where('email',$this->input->post('email'));      
    $query = $this->db->get();

    if ($query->num_rows() == 1) {
        $row= $query->row();
        return $row->user_id;
    }
    else{
        return false;
    }       
}

检查this以获取可从查询结果中获取行的可用函数的完整列表。

注意

仅为了您的信息,您应该在控制器中读取参数(GET,POST)并传递给模型函数。

因此,您的完整代码将与以下内容完全相同:

控制器

$email=$this->input->post('email');
$user_id = $this->model_users->get_user_id($email);
$data = array (     
        'user_id' => $user_id,
        'logged_in' => 1        
        );
$this->session->set_userdata($data);

模型

public function get_user_id($email) {

    $this->db->select('user_id');
    $this->db->from('users');   
    $this->db->where('email',$email);      
    $query = $this->db->get();

    if ($query->num_rows() == 1) {
        $row= $query->row();
        return $row->user_id;
    }
    else{
        return false;
    }       
}

答案 1 :(得分:0)

除了row()之外还有其他显示结果的方法,你可以使用result_array()。它会生成数组结果。

public function get_user_id() {

    $this->db->select('user_id');
    $this->db->from('users');   
    $this->db->where('email',$this->input->post('email'));      
    $query = $this->db->get();

    if ($query->num_rows() == 1) {
        $row= $query->result_array();
        return $row['user_id'];
    }
    else{
        return false;
    }       
}

有关详细信息,请参阅此处https://ellislab.com/codeigniter/user-guide/database/results.html