php/mysqli で更新を行っています。更新は正常に機能しますが、問題は次の警告が表示されることです。
警告: mysqli_stmt::fetch() [mysqli-stmt.fetch]: (HY000/2053): 行 44 のステートメントに関連付けられた結果セットがないときに行を読み取ろうとしました。
この警告が何度も表示されるため、ユーザーがフォームを送信した後、正しいユーザー名を入力しても、「入力したユーザー名は有効ではありません。もう一度入力してください」というメッセージが表示されます。実際には、ユーザーを thankyou.php ページに移動する必要があります。
私の質問は、この警告を削除するにはどうすればよいですか?
$username = (isset($_POST['username'])) ? $_POST['username'] : '';
$newpassword = (isset($_POST['newpassword'])) ? $_POST['newpassword'] : '';
$loggedIn = false;
if (isset($_POST['submit'])) {
// don't use $mysqli->prepare here
$query = "UPDATE Teacher SET TeacherSalt = ?, TeacherPassword = SHA1(CONCAT(?,?)) WHERE TeacherUsername = ? LIMIT 1";
// prepare query
$stmt=$mysqli->prepare($query);
// You only need to call bind_param once
$stmt->bind_param("ssss",$salt,$newpassword,$salt,$username);
// execute query
//bind results
$stmt->bind_result($dbTeacherUsername,$dbTeacherPassword,$dbTeacherSalt);
$stmt->execute();
while($stmt->fetch()) {
if ($username == $dbTeacherUsername) {
$loggedIn = true;
}
}
/* close statement */
$stmt->close();
/* close connection */
$mysqli->close();
if ($loggedIn == true){
$_SESSION['username'] = $dbTeacherUsername;
header( 'Location: thankyou.php' ) ;
die();
}
}
if ($loggedIn == false && $_POST) {
echo "The Username you Entered is not Valid. Try Entering it Again.";
}
?>