2011-08-22 43 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