php - PDO mysql 更新错误

标签 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;
} 

}

最佳答案

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

    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;
} }

关于php - PDO mysql 更新错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29619328/

相关文章:

mysql - 与默认或动态类别关联的元素的最佳数据库设计?

php - mySQL PDO 准备语句与非准备语句的不同结果

java - Android HttpURLConnection : Why Linux makes session file in everytimes

php - 每当单击按钮时触发 Web 服务时,数据都会在数据库中输入两次?

php - 如何只获取foreach中的最后一个值? php

mysql - 在不使用 MySQL 中的 LIMIT 和 OFFSET 的情况下在存储过程中进行分页。

php - 需要 PHP 重定向方面的帮助

php - 将 PHP PDO 迁移到 Laravel PDO 导致 Invalid parameter number

php - 可以在类中获取数据但是返回时它只发送 bool 值 php PDO?

PHP 半径 : Set Cisco Attribute-Value Pairs (AVPairs)