2011-08-22 45 views
0

我试着去编写一个函数来更新笨密码,这里是代码如何用codeigniter正确写入?

public function changepass(){ 
    $password = md5($this->_clean($_POST['Password'])); 
    $data = array(
     'Password' => $password 
    );   
    $this->db->update('users', $data, array('UserName' => $_POST[UserName])); 
} 

此更新数据库,但仍然抛出一个消息

Severity: Notice 
Message: Use of undefined constant UserName - assumed 'UserName' 

如何防止此消息,以及如何检查查询是否成功执行,并在这种情况下回显消息“成功”?

+0

我可能会丢失一些东西,但是如果$ _POST ['UserName']是当前用户的用户名,您会验证它吗?如果没有,阻止我将您的用户名与我选择的密码一起发布,然后登录到您的帐户?恕我直言,你不应该在这种情况下使用$ _GET/$ _ POST - 你应该让用户从会话中更新。 – ddinchev

回答

5

更改$_POST[UserName]$this->input->post('UserName')只要你在控制器。这在模型中不起作用。 CodeIgniter也销毁$ _POST数组。

$this->db->affected_rows()应该返回1成功。

+0

感谢您的答案,我试过$ this-> db-> affected_rows(),如果用户输入的pass与之前一样,返回0.这意味着查询没有执行? –

+0

我想它被执行,但没有任何变化,意味着影响0行。我建议你使用ID而不是字符串来识别用户数据。 – aambrozkiewicz