繁体   English   中英

PDO select语句卡在它询问数据库的部分

[英]PDO select statement stuck in the part where it asks database

我对PDO SELECT有问题,我尝试从数据库获取数据,但是当函数对PDO->prepare获取请求冻结时,什么也没有发生,好像卡在询问数据库的部分一样,导致第一个ECHO工作。 我尝试使用( column = 'value')更改SQL语法,但结果仍然相同。 此源代码是该类中函数的一部分,我为此应用使用OOP。 请帮助,谢谢。 var_dump()什么都没显示,好像函数没有通过处理PDO。

public function changePswd($old_pswd, $new_pswd, $user_id) {
        echo $old_pswd . "<br/>" . $new_pswd . "<br/>" . $user_id;
        try {
            $stmt = $this->_db->prepare("SELECT * FROM zamestnanci WHERE id='" . $user_id . "'");
            $stmt->execute();
            if ($stmt->rowCount() > 0) {
                $hash_pswd = $stmt->fetch(PDO::FETCH_ASSOC);
                return $hash_pswd;
            }
        } catch (PDOException $e) {
            throw new Exception('DATABASE ERROR: ' . $e->getMessage());
        }
        var_dump($hash_pswd);

我已经解决了问题,对不起,我很着急。 问题出在TRY / CATCH的TRY部分的返回值中。 由于TRY / CATCH取返回值时会中断功能的所有进度。

有一个成功:更改密码(哈希+盐)/ comapre +更新的功能

public function changePswd($old_pswd, $new_pswd, $user_id) {
        try {
            $stmt = $this->_db->prepare("SELECT password,SALT FROM zamestnanci WHERE id='" . $user_id . "'");
            $stmt->execute();
            if ($stmt->rowCount() > 0) {
                $hash_pswd = $stmt->fetch(PDO::FETCH_ASSOC);
            }
        } catch (PDOException $e) {
            throw new Exception('DATABASE ERROR: ' . $e->getMessage());
        }
        $make_pword = sha1($hash_pswd['SALT']) . sha1($old_pswd);
        if ($make_pword === $hash_pswd['password']) {

            function rand_chars_salt($count = 8, $chars = 36) {
                $return = "";
                for ($i = 0; $i < $count; $i++) {
                    $rand = rand(0, $chars - 1);
                    $return .= chr($rand + ($rand < 10 ? ord('0') : ($rand < 36 ? ord('a') - 10 : ord('A') - 36)));
                }
                return $return;
            }

            $SALT = rand_chars_salt();
            $pass_finalize = sha1($SALT) . sha1($new_pswd);
            try {
                $this->_stmt = $this->_db->prepare("UPDATE zamestnanci SET `SALT`='" . $SALT . "',`password`='" . $pass_finalize . "' WHERE id='" . $user_id . "'");
                $this->_stmt->execute();
            } catch (PDOException $e) {
                throw new Exception('DATABASE ERROR: ' . $e->getMessage());
            }
            echo "<center><span><b>Heslo úspěšně změněno</b><span><center>";
        } else {
            echo "<center><span><b>Staré heslo se neshoduje</b><span><center>";

}}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM