1
我正在處理PHP腳本以重置用戶的密碼。我有一個電子郵件和一個令牌檢查設置,以便在允許用戶重置之前這兩個必須有效。到目前爲止,所有的工作都到了我將密碼插入數據庫的地步。下面是我的PDO的代碼(我打破了在這些地區的SQL查詢,以便它在更容易一眼):PHP PDO未執行SQL命令
try {
$sql = "UPDATE users
SET password=:password, sessionTime=:sessionTime, sessionID=:sessionID
WHERE sessionID=:sessionID";
$update = $con->prepare($sql);
$update->bindValue("password", hash("sha256", $password . $salt), PDO::PARAM_STR);
$update->bindValue("sessionID", "0", PDO::PARAM_STR);
$update->bindValue("sessionTime", "0", PDO::PARAM_STR);
$update->execute();
echo "<br /> Successfully updated the password!";
} catch(PDOException $e) {
throw new Exception('something went wrong with the password reset', 0, $e);
}
$salt
和$password
是在此之前定義的,而當我運行該腳本,它輸出Successfully updated the password!
,但是,我的數據庫中沒有任何更改。當我複製並將查詢粘貼到phpMyAdmin並將:name
參數更改爲實際字符串時,它完美地工作(更新我的數據庫),並且不會返回任何錯誤 - 另外,我沒有收到php_error.log
中的任何內容,所以我沒有真的很確定爲什麼這不起作用。
任何幫助將不勝感激,謝謝。
是啊,這是我回來了:'陣列(3){[0] =>串(5)「00000 「[1] => NULL [2] => NULL}',以及它說它的工作。 – John
如果你迴應哈希(「sha256」,$ password。$ salt),會發生什麼情況;你得到了什麼?我也看到你正在設置'sessionID',其中sessionID ='0'。所以你有兩個佔位符:sessionID但只綁定一次。 –
散列返回它應該 - 我之前做了錯誤檢查。但'sessionID'的工作!我以爲我之前已經定義了它,但是我忘記了每次執行這種查詢時都必須綁定。它現在完美運行,謝謝! – John