Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 获取数据库中的信息并插入会话codeigniter_Php_Database_Codeigniter_Session - Fatal编程技术网

Php 获取数据库中的信息并插入会话codeigniter

Php 获取数据库中的信息并插入会话codeigniter,php,database,codeigniter,session,Php,Database,Codeigniter,Session,我不熟悉codeigniter和使用会话。我在会话中插入单个数据时遇到问题 型号: function get_user_info() { $user_email = $this->input->post('signin-email'); $this->db->select('acct_id, acct_fname, acct_lname, acct_mname'); $this->db->where('email', $user_ema

我不熟悉codeigniter和使用会话。我在会话中插入单个数据时遇到问题

型号:

function get_user_info() {
    $user_email = $this->input->post('signin-email');
    $this->db->select('acct_id, acct_fname, acct_lname, acct_mname');
    $this->db->where('email', $user_email);
    $query = $this->db->get('account');

    return $query->result_array();
}
控制器:

public function LoginValidation(){
    $this->load->library('form_validation');

    $this->form_validation->set_rules('email', 'Email', 'required|trim|xss_clean|callback_validate_credentials');
    $this->form_validation->set_rules('password', 'Password', 'required|trim|md5');
    $this->load->model('users_model');
    if($this->form_validation->run()){
        $data = array(
            'email' => $this->input->post('signin-email'),
            'is_logged_in' => 1,
            'user_info' => $this->users_model->get_user_info($query->acct_type)
        );
        $this->session->set_userdata($data);

        redirect('home');
    } 
}
这是行,我希望将其单独放入会话:

它总是这样出现:

[acct_id] => 1
[acct_fname] => Sgt
[acct_lname] => Condoriano
[acct_mname] => T

我怎样才能做到这样:

[acct_id] => 1
[acct_fname] => Sgt
[acct_lname] => Condoriano
[acct_mname] => T
改变这个

function get_user_info() {
    $user_email = $this->input->post('signin-email');
    $this->db->select('acct_id, acct_fname, acct_lname, acct_mname');
    $this->db->where('email', $user_email);
    $query = $this->db->get('account');

    return $query->result_array();
}
进入这个

function get_user_info() {
    $user_email = $this->input->post('signin-email');
    $this->db->select('acct_id, acct_fname, acct_lname, acct_mname');
    $this->db->where('email', $user_email);
    $query = $this->db->get('account');

    $result = $query->result_array();
    return reset($result);
}
模型

内部控制器

$user_info = $this->users_model->get_user_info(); // method does not have any arg
$data = array(
            'email' => $this->input->post('signin-email'),
            'is_logged_in' => 1,
            'user_info' => $user_info
        );
$this->session->set_userdata($data);
/* try this for adding as direct index */
$this->session->set_userdata($user_info);
var_dump( this->session->userdata('acct_id') );
var_dump( this->session->userdata('acct_fname') );
var_dump( this->session->userdata('acct_lname') );
var_dump( this->session->userdata('acct_mname') );

像下面这样做

$sess_array = array(
                    'acct_id' => 1,
                    'email' => qwe@qwe.com,
                    .....
                );
$this->session->set_userdata('user_data', $sess_array);

如果只检索一行, 只要改变一下:

return $query->result_array();

试试这个:

型号

function get_user_info() {
    $user_email = $this->input->post('signin-email');
    $this->db->select('acct_id, acct_fname, acct_lname, acct_mname');
    $this->db->where('email', $user_email);
    $query = $this->db->get('account');

    return $query->first_row('array'); //this is use when you only want to retrieve a single user and use result_array() for more users to be retrieve.
}
控制器

public function LoginValidation(){
    $this->load->library('form_validation');
    $this->load->helper(array('form','url')); //load if not yet loaded in autoload.php

    $this->form_validation->set_rules('email', 'Email', 'required|trim|xss_clean|callback_validate_credentials');
    $this->form_validation->set_rules('password', 'Password', 'required|trim|md5');
    if($this->form_validation->run() == false){
       $this->load->view('path'); //page you want to be view if validation is false
    }else {
      $input = $this->input->post();
      $user_info = $this->users_model->get_user_info();
      $data = array(
            'email' => $input['signin-email'],
            'is_logged_in' => 1,
            'user_info' => $user_info
        );
        $this->load->model('users_model');
        $this->session->set_userdata($data);

        redirect('home');
    } 
}

希望这有帮助^__^

不清楚你想要什么?不要在你的模型中使用
result\u array()
,试着使用
row\u array()
检查这行代码
$this->users\u model->get\u user\u info($query->act\u type)
这里有什么问题吗do@Vicky我想看起来像这个[user\u data]=>Array([email]=>qwe@qwe.com[是否已登录]=>1[acct\U id]=>1[acct\U fname]=>Sgt[acct\U lname]=>Condoriano[acct\U mname]=>T]@Craig那么我如何才能像这样输出它^qwe@qwe.com[是否已登录]=>1[用户信息]=>Array([acct\u id]=>1[acct\u fname]=>Sgt[acct\u lname]=>Condoriano[acct_mname]=>T)答案已更新。它的输出不能与结果数组返回多维数组中的多条记录和行数组返回单行相同。我删除了“user\u info”=>$user\u info行以使其不冗余,感谢您,我的问题现在已解决
public function LoginValidation(){
    $this->load->library('form_validation');
    $this->load->helper(array('form','url')); //load if not yet loaded in autoload.php

    $this->form_validation->set_rules('email', 'Email', 'required|trim|xss_clean|callback_validate_credentials');
    $this->form_validation->set_rules('password', 'Password', 'required|trim|md5');
    if($this->form_validation->run() == false){
       $this->load->view('path'); //page you want to be view if validation is false
    }else {
      $input = $this->input->post();
      $user_info = $this->users_model->get_user_info();
      $data = array(
            'email' => $input['signin-email'],
            'is_logged_in' => 1,
            'user_info' => $user_info
        );
        $this->load->model('users_model');
        $this->session->set_userdata($data);

        redirect('home');
    } 
}