0

私は次のmySQLクエリを持っています:

$content = mysqli_query($dblink, "SELECT * FROM passwordrecovery WHERE code = '$formcode'");

            while($row = mysqli_fetch_array($content)) {
                $db_username = $row['username'];
                $db_email = $row['email'];
                $db_code = $row['code'];
            }

ここのどこかにIFステートメントを追加して、クエリが成功したかどうかを確認したいのですが、どこにあるのかわかりません。

基本的に、ユーザーがパスワードを取得するためのコード(電子メールで送信)を挿入できるフォームがあります。しかし、彼らは間違いを犯してデータベースに存在しないコードを入力する可能性があり、私はそのような状況を説明してエラーを返したいと思います。どうすればいいのかわからない?

4

1 に答える 1

1

クエリが失敗すると、結果リソースではなくに$contentなります。FALSE誤りではないことを確認してください。存在しないコードを入力した場合、行は戻されないため、を使用して少なくとも1つの行を確認してくださいmysqli_num_rows()

$content = mysqli_query($dblink, "SELECT * FROM passwordrecovery WHERE code = '$formcode'");

if ($content) {
    // Check for at least one row returned
  if (mysqli_num_rows($content) < 1) {
    // Invalid lookup, show error to user
  }
  // Got a row back, so query was valid
  else {
    while($row = mysqli_fetch_array($content)) {
      $db_username = $row['username'];
      $db_email = $row['email'];
      $db_code = $row['code'];
    }
  } 
}
else {
  // Query failure - display error to user
  // and check mysqli_error() internally for debugging
}

$formcodeを介してすでに適切に脱出したことを前提としていますmysqli_real_escape_string($formcode)

于 2012-05-12T19:46:22.500 に答える