只想从我的数据库中获取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);
答案 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