#codeigniter
#codeigniter
Вопрос:
У меня возникли проблемы с получением идентификатора пользователя, вошедшего в систему, из базы данных…
Это мой код контроллера :
function validation(){
$this->load->model('users_model');
$query = $this->users_model->validate();
if ($query){
$this->users_model->get_userID($this->input->post('email'));
$data = array(
'email' => $this->input->post('email'),
'is_logged_in' => true,
'user_id' => $user_id
);
$this->session->set_userdata($data);
redirect('home');
}
else {
$this->index();
}
}
Это моя модельная функция, в которой я возвращаю идентификатор пользователя из базы данных:
function get_userID($email){
$this->db->where('email',$email);
$query = $this->db->get('users');
foreach ($query->result() as $row)
{
$user_id = $row->id;
}
return $user_id;
}
Все работает идеально, за исключением того, что $user_id возвращает пустой… Что я делаю не так?
Ответ №1:
Попробуйте:
$user_id= $this->users_model->get_userID($this->input->post('email'));
Комментарии:
1. @Rick Rhodes Вы должны принять вопрос. Пожалуйста, найдите серую галочку под его ответом и нажмите на нее. Он должен быть зеленым. Если вы не отметите ответ как правильный в ближайшее время, вы не сможете задать вопрос здесь.
Ответ №2:
попробуйте изменить функцию модели на это —
function get_userID($email){
$this->db->where('email',$email);
$query = $this->db->get('users')->row_array(); // retrieves only first-row.
return $query['id'];
}
В контроллере функция нуждается в небольшой модификации следующим образом —
function validation(){
$this->load->model('users_model');
$query = $this->users_model->validate();
if($query){
//$user_id was not assigned before :)
$user_id = $this->users_model->get_userID($this->input->post('email'));
$data = array(
'email' => $this->input->post('email'),
'is_logged_in' => true,
'user_id' => $user_id
);
$this->session->set_userdata($data);
redirect('home');
}
else {
$this->index();
}
}
надеюсь, это поможет,
Комментарии:
1. кстати, еще раз взглянув на свой код, вы также должны проверить функцию validate(), потому что, если она не возвращает TRUE, функция модели никогда не будет доступна.