我的更新功能有问题。此代码正在更新数据库中的所有行,我想只更新具有登录用户名的行。“密码”是我登录的一个,我想用password3替换。问题是密码替换了我的数据库中的所有行(密码)。
function edit_member()
{
$new_member_update_data = array(
'password' => md5($this->input->post('password3'))
);
$this->db->where('password',$this->input->post('password'));
$update = $this->db->update('memberships',$new_member_update_data);
return $update;
}
答案 0 :(得分:0)
检查列密码值和 $ this-> input-> post('password')值
function edit_member()
{
$password = md5($this->input->post('password3');
$this->db->set('password',$password );
$this->db->where('password',$this->input->post('password'));
$this->db->where('id',$this->input->post('id'));
$update = $this->db->update('memberships');
return $update;
}
答案 1 :(得分:0)
假设您已登录,那么您将从会话获得userId
权限。?所以请在此处使用
function edit_member()
{
$new_member_update_data = array(
'password' => md5($this->input->post('password3'))
);
$this->db->where('iUserId',$this->session->userdata('iUserId'));
$update = $this->db->update('memberships',$new_member_update_data);
return $update;
}
请注意iUserId
将是唯一字段,甚至是自动增量字段。
答案 2 :(得分:0)
检查数据库中的密码值,如果由MD5加密,则必须在WHERE子句中传递密码的加密值。
function edit_member()
{
$password = md5($this->input->post('password3');
$this->db->set('password',$password );
$this->db->where('password',md5($this->input->post('password'));
$update = $this->db->update('memberships');
return $update;
}