[英]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.