Инструкция ELSE не возвращается, если цикл while возвращается пустым

0

Я работаю над скриптом, который проверяет, существует ли письмо в базе данных barn_users, чтобы сбросить пароль. И если письмо не существует, токен/код не генерируется и не сохраняется в базе данных. Все работает отлично, пока я не введу электронное письмо, которое отсутствует в системе. Оператор else с ошибкой "Не удалось найти электронную почту в системе", не запускается. Что я делаю неправильно, чтобы не получить это?

    $sql_1 = "SELECT * FROM password_reset WHERE email='$email'";
    $sql_2 = "SELECT * FROM barn_users WHERE email='$email'";

    $generate = mysqli_query($conn, $sql_1);
    $searchEmail = mysqli_query($conn, $sql_2);
    while($row = mysqli_fetch_array($searchEmail)) {
            if(mysqli_num_rows($searchEmail) > 0) {
                if (mysqli_num_rows($generate) > 1) {
            } else if (mysqli_num_rows($generate) < 1) {
                $sql = "INSERT INTO password_reset (code,email) VALUES ('$code','$email')";
            } else {
                $sql = "UPDATE password_reset SET code='$code' WHERE email='$email'";
            }   
            if ($conn->query($sql) == TRUE) {
                echo "Reset password has been emailed to you"; 
            } else {

            }
        } else {
            echo "Could not find email in the system.";
        } 
    }
  • 1
    Ваш остальной внутри вашего цикла. Проверяет это только в том случае, если возвращается строка.
  • 0
    Понимаю. Смогу ли я выйти из цикла, чтобы вернуть сообщение?
Показать ещё 3 комментария
Теги:
mysqli
php-7

1 ответ

2

Спасибо @Bleach и @ivanivan за ваши комментарии. Оба ответа помогли. Вот результат работы. Сделав переменную false вне цикла, дал мне ответ, который я искал.

    $sql_1 = "SELECT * FROM password_reset WHERE email='$email'";
    $sql_2 = "SELECT * FROM barn_users WHERE email='$email'";

    $generate = mysqli_query($conn, $sql_1);
    $searchEmail = mysqli_query($conn, $sql_2);

    $found = false;

    while($row = mysqli_fetch_array($searchEmail)) {
        $found = true;
        if(mysqli_num_rows($searchEmail) > 0) {
            if (mysqli_num_rows($generate) > 1) {

            } else if (mysqli_num_rows($generate) < 1) {
                $sql = "INSERT INTO password_reset (code,email) VALUES ('$code','$email')";
            } else {
                $sql = "UPDATE password_reset SET code='$code' WHERE email='$email'";
            }   
            if ($conn->query($sql) == TRUE) {
                echo "Reset password has been emailed to you"; 
            } else {

            }
        } else {

        }
    }

    if ($found == false) {
        echo "Sorry, that email was not found in the system. Please try again.";
    }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню