Codeigniter更新功能无法正常工作

时间:2014-02-17 10:56:52

标签: codeigniter

我的更新功能有问题。此代码正在更新数据库中的所有行,我想只更新具有登录用户名的行。“密码”是我登录的一个,我想用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; 
}

3 个答案:

答案 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; 
}