Php 需要更新codeigniter上的用户表密码字段

Php 需要更新codeigniter上的用户表密码字段,php,mysql,codeigniter,sql-update,Php,Mysql,Codeigniter,Sql Update,#表名为users# ##模型名为user\u模型## ###控制器名称是get\u password### 问题-密码未更改,保持不变 > model(user_model) public function updatePassword($email,$data) { $data1=array('password'=>$data); $this->db->where('email','$email'); $thi

#表名为users#

##模型名为user\u模型##

###控制器名称是get\u password###

问题-密码未更改,保持不变

> model(user_model)



 public function updatePassword($email,$data)

 {   
      $data1=array('password'=>$data);

      $this->db->where('email','$email');

      $this->db->update('users','password'); 

    $success = $this->db->affected_rows(); 

    if(!$success){
        error_log('Unable to updatePassword');
        return false;
    }        
    return true;
} 


 > controller(get_password)

public function index($rs=FALSE)
{
$this->load->database();
$this->load->helper(array('form', 'url'));
$this->load->library('form_validation');
$this->load->model('user_model');
$this->load->library('session');

  $this->form_validation->set_rules('email', 'Email', 'required|valid_email');
  $this->form_validation->set_rules('password', 'password', 'required');
  $this->form_validation->set_rules('passconf', 'password Confirmation', 'required|matches[password]');

 if ($this->form_validation->run() == FALSE)
  {
              echo form_open();
              $this->load->view('users/fpre');
 }
else
 {


  $data = array(
        'password' => md5($this->input->post('password')),


  );

    $email =array(

        'email' =>$this->input->post('email')
  );



   $this->user_model->updatePassword($data,$email);

  echo "Congratulations!";
  }

}

它没有显示错误,但密码没有更新,在用户表中保持不变..我找不到问题是,请帮我找出..

我相信这行
$this->db->update('users','password')应该是
$this->db->update('users',$data)


现在您没有将密码传递给更新函数。您正在传递字符串“password”。

我相信这行
$this->db->update('users','password')应该是
$this->db->update('users',$data)


现在您没有将密码传递给更新函数。您正在传递字符串“password”。

您的模型函数显示参数应该是email,然后是password,但您的控制器正在以其他方式传递参数

$this->user_model->updatePassword($data,$email);
应该是:

$this->user_model->updatePassword($email,$data);
我还认为数据需要以不同的方式传递。where()函数需要
where(字段名称,值)
where(数组(字段名称=>value))
。看看你的代码,你似乎把这两者都混在了一起

使用set()也会有帮助,因此

$data1=array('password'=>$data);
$this->db->where('email','$email');
$this->db->update('users','password');
使用:


注意:代码未经测试。

您的模型函数显示参数应该是电子邮件,然后是密码,但您的控制器正在通过其他方式传递参数

$this->user_model->updatePassword($data,$email);
应该是:

$this->user_model->updatePassword($email,$data);
我还认为数据需要以不同的方式传递。where()函数需要
where(字段名称,值)
where(数组(字段名称=>value))
。看看你的代码,你似乎把这两者都混在了一起

使用set()也会有帮助,因此

$data1=array('password'=>$data);
$this->db->where('email','$email');
$this->db->update('users','password');
使用:


注意:代码未经测试。

控制器(获取密码):

型号(用户型号):

查看(用户/fpre):

要比较的更改:
控制器(获取密码):

型号(用户型号):

查看(用户/fpre):

要比较的更改:

没有。我试过了,但仍然没有对表用户进行更改。密码仍然是旧的。正如Parker1090所说,当您调用updatePassword函数时,您的参数也会向后。没有。我尝试过,但仍然没有对表用户进行更改。密码仍然旧。正如Parker1090所说,调用updatePassword函数时,您的参数也是反向的。不要使用MD5作为密码,否则可能会被黑客攻击。您应该在db varchar 255上使用php密码哈希密码列,要验证是否使用MD5作为密码,则可能会被黑客攻击,您应该在db varchar 255上使用php密码哈希密码列,并验证感谢您的帮助..它正在工作…我们可以在不输入电子邮件和当前密码的情况下更新当前密码吗?是的,您需要使用CodeIgniter会话库()登录到您的项目。感谢您的帮助..它正在工作…我们可以在不输入电子邮件和当前密码的情况下更新当前密码吗?是,您需要使用CodeIgniter会话库()登录到您的项目中。
if ($msg){
    echo 'Message: '.$msg;  
}

echo form_open();
echo form_input('email', $email);
echo form_password('password');
echo form_password('newpassword');
echo form_password('newpassconf');
echo form_submit('', 'Enviar');
echo form_close();