【问题标题】:get information in database and insert into session codeigniter获取数据库中的信息并插入会话代码点火器
【发布时间】:2015-06-17 07:39:18
【问题描述】:

我是 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

【问题讨论】:

  • 不清楚你想要什么?
  • 不要在模型中使用result_array(),而是尝试使用row_array()
  • 检查这行代码$this->users_model->get_user_info($query->acct_type)你做错了什么
  • @Vicky 我想看起来像这样 [user_data] => 数组 ([email] => qwe@qwe.com [is_logged_in] => 1 [acct_id] => 1 [acct_fname] =>中士 [acct_lname] => 康多里亚诺 [acct_mname] => T)
  • @Craig 那么我怎么能像这样输出呢^

标签: php database codeigniter session


【解决方案1】:

型号

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->row_array(); // changed to row array
}

在控制器中

$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') );

【讨论】:

  • 相同的输出 [email] => qwe@qwe.com [is_logged_in] => 1 [user_info] => 数组 ( [acct_id] => 1 [acct_fname] => Sgt [acct_lname] =>康多里亚诺 [acct_mname] => T ) )
  • 答案已更新。并且它不能与result_array在多维数组中返回多条记录和row_array返回单行的输出相同。
  • 我删除了 'user_info' => $user_info 行以使其不再多余,感谢我的问题现在已解决link
【解决方案2】:

改变这个

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);
}

【讨论】:

    【解决方案3】:

    像下面这样做

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

    【讨论】:

      【解决方案4】:

      如果您只检索一行,则 只是改变:

      return $query->result_array();
      

      return $query->row_array();
      

      【讨论】:

        【解决方案5】:

        试试这个:

        型号

        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');
            } 
        }
        

        希望这会有所帮助。 ^__^

        【讨论】:

          猜你喜欢
          • 2012-11-01
          • 1970-01-01
          • 2016-09-03
          • 2016-12-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多