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,请使用。