CakePHP:无法更新数据库

时间:2011-07-09 04:04:05

标签: cakephp syntax

我正在关注一些关于使用CakePHP重置忘记密码的在线示例。这是代码:

    $temp = $this->User->findByEmail($this->data['User']['email']);
        $user = $temp['User']['UID'];
        $this->set('email', $this->data['User']['email']);
        if($user)
        {
            $new_salt = UsersController::generateStr();
            $new_password = UsersController::generateStr(5);
            $temp_password = Security::hash((Security::hash($new_password,'md5',false) . $new_salt), 'md5', false);
            $data = array('User' => array('UID' => $user, 'Password' => $temp_password));
            $this->User->save($data, false, array('Password'));
            $data = array('User' => array('UID' => $user, 'Salt' => $new_salt));
            $this->User->save($data, false, array('Salt'));
            $to = $this->data['User']['email'];
            $subject = "RideShare Password Reset";
            $message = "Your new RideShare password is " . $new_password;
            $headers = "";
            mail($to, $subject, $message, $headers);
            $this->Session->setFlash('Your new password has been sent to' . $this->data['User']['email']);
        }

当此代码执行时,我的页面显示以下调试信息:

    Query: INSERT INTO `users` (`Password`, `modified`, `created`) VALUES ('81a5392c1d9687811cfeb7e66c887a4a', '2011-07-08 23:53:05', '2011-07-08 23:53:05')
    Query: INSERT INTO `users` (`Salt`) VALUES ('HjP1miaias')

但是当我通过访问phpMyAdmin直接检查数据库时,我发现这些值实际上没有更新过。

感谢任何建议。

1 个答案:

答案 0 :(得分:0)

INSERT INTO个查询将新行插入数据库。如果查看数据库中的最近条目,您可能会看到它已插入两个新条目,一个带有密码,另一个带有salt。您需要设置ID,以便Cake在使用$this->User->id = $user保存之前知道要更新的条目。

您使用UID作为id字段的名称而不是Cake标准id,我不知道这是否是问题的一部分。 (理论上,如果模型配置正确,则不应使用非标准字段名称。)