gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 23:49:09 24 4
gpt4 key购买 nike

我在 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 在获取返回值时会破坏函数中的所有进度。

有一个成功:修改密码(HASH+SALT)/comapre+update的功能

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

} }

关于php - PDO select语句卡在询问数据库的部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25740610/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com