Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.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 用户为什么不更新?我是否正确地传递了数据?_Php_Codeigniter - Fatal编程技术网

Php 用户为什么不更新?我是否正确地传递了数据?

Php 用户为什么不更新?我是否正确地传递了数据?,php,codeigniter,Php,Codeigniter,我想允许用户更新其帐户详细信息。因此,他们填写表格并点击提交。代码如下: 型号: public function __construct() { $this->load->database(); } public function get_details($data) { $query = $this->db->get_where('users', array('id' => $data['id'])); return $query->row_arr

我想允许用户更新其帐户详细信息。因此,他们填写表格并点击提交。代码如下:

型号:
public function __construct()
{
    $this->load->database();
}

public function get_details($data)
{
$query = $this->db->get_where('users', array('id' => $data['id']));
return $query->row_array();

}



public function update_user($data)
{

$this->load->helper('url');

$data2 = array(
    'username' => $this->input->post('username'),
    'password' => md5($this->input->post('password')),
    'email' => $this->input->post('email')
    );

$this->db->where('id', $data['id']);
$this->db->update('users', $data2); 

}

}
我的控制器:

public function myaccount()
 {
 $this->load->helper('form');
 $this->load->helper('url');
 $this->load->model('myaccount_model');
 $this->load->library('form_validation'); 
 $config = array(
           array(
                 'field'   => 'username', 
                 'label'   => 'Username', 
                 'rules'   => 'trim|required|min_length[5]|max_length[12]|xss_clean'
              ),
           array(
                 'field'   => 'password', 
                 'label'   => 'Password', 
                 'rules'   => 'trim|required|matches[passconf]'
              ),
            array(
                 'field'   => 'passconf', 
                 'label'   => 'Password Confirmation', 
                 'rules'   => 'trim|required'
              ),
           array(
                 'field'   => 'email', 
                 'label'   => 'Email', 
                 'rules'   => 'trim|required|valid_email'
              )
        );
$this->form_validation->set_message('required', 'Field required');
$this->form_validation->set_rules($config);  
     if($this->session->userdata('logged_in'))

   {
   if ($this->form_validation->run() === FALSE)
   {
   $session_data = $this->session->userdata('logged_in');
   $data['id'] = $session_data['id'];
   $data['result']=$this->myaccount_model->get_details($data);
   $this->load->view('head');
   $this->load->view('myaccount', $data);
   $this->load->view('footer');
   }
 else
 {
    $session_data = $this->session->userdata('logged_in');
 $data['id'] = $session_data['id'];
 $data['result']=$this->myaccount_model->update_user($data);
    redirect ('login', 'refresh');
 }
 } else
 {
 redirect('login', 'refresh');
 }
我认为我没有在这行上正确传递数据(用户id):

$data['result']=$this->myaccount_model->update_user($data);
一切正常,但是当用户单击submit时,页面会刷新,用户数据不会更新


谢谢

除非我遗漏了什么,否则您的查询(
get\u details()
update\u user()
)都是错误的

$data
只是一个数组,因此您还必须指定id键

这两个

$data['result']=$this->myaccount_model->get_details($data);
...
$data['result']=$this->myaccount_model->update_user($data);
应该是

$data['result']=$this->myaccount_model->get_details($data['id']);
...
$data['result']=$this->myaccount_model->update_user($data['id']);

会话中的用户id可能不正确。请确保此行的数据正确无误:

$data['result']=$this->myaccount_model->update_user($data);
$data['id']=$session_data['id']

尝试转储$data和$data2变量,并在更新之前在以下位置验证所有内容是否正确:


$this->db->update('users',$data2)

旁注:注意使用MD5存储密码。它是旧的,被认为是坏的。对于密码存储,请使用或PHP5.5的函数。对于小于5.5的PHP,请使用。