PDO mysql更新错误

时间:2015-04-14 04:44:31

标签: php mysql pdo

我似乎有一个我不太懂的错误。该过程工作正常,与数据库的连接很好,但由于某种原因它不会更新。我没有明显的错误,或php认可的错误。以下是我所知道的类的代码:(注意最后一个缺失),当我复制粘贴它时发生了,它在代码中很好

    public function change_password($user, $pass) {
    if($user) {
        $password = md5($pass);
        $this->_query = $this->_pdo->prepare("UPDATE users SET password = ? WHERE ? = ?");
        if($this->_query->execute(array($pass, Check::data($user), $user))) {
            return true;
        }
    }
    return false;
}



class Check {
public static function data($data) {
    if($data) {
        if(is_numeric($data)) {
            $_id = 'id';
        } else if(filter_var($data, FILTER_VALIDATE_EMAIL)) {
            $_id = 'email';
        } else {
            $_id = 'username';
        }
        return $_id;
    }
    return false;
} 

}

1 个答案:

答案 0 :(得分:0)

如果有人有兴趣,我解决了这个问题,对于未来类似的问题,我找到了解决办法..

    public function change_password($user, $pass) {
    if($user) {
        $pass = md5($pass);
        $id = $this->id($user);

        $this->_query = $this->_pdo->prepare("UPDATE users SET password = ? WHERE id = ?");
        if($this->_query->execute(array($pass, $id))) {
            return true;
        }
    }
    return false;
}


    public function id($user) {
    if($user) {
        $params = $this->fetch($user);

        foreach($params as $param) {
            if($param['id']) {
                return $param['id'];
            }
        }
    }
    return false;
}

    public function fetch($user) {
    if($user) {
        if(Check::data($user) === 'id') {
            $this->_query = $this->_pdo->prepare("SELECT * FROM users WHERE id = :user");
        }

        if(Check::data($user) === 'email') {
            $this->_query = $this->_pdo->prepare("SELECT * FROM users WHERE email = :user");
        }

        if(Check::data($user) === 'username') {
            $this->_query = $this->_pdo->prepare("SELECT * FROM users WHERE username = :user");
        }

        $this->_query->execute(array(':user' => $user));
        return $this->_query->fetchAll();           
    }
    return false;
}`class Check {
public static function data($data) {
    if($data) {
        if(is_numeric($data)) {
            $_id = 'id';
        } else if(filter_var($data, FILTER_VALIDATE_EMAIL)) {
            $_id = 'email';
        } else {
            $_id = 'username';
        }
        return $_id;
    }
    return false;
} }