PHP Проверка, если электронная почта уже существует в базе данных - PullRequest
0 голосов
/ 28 апреля 2019

Я делаю сайт с системой входа в систему.Когда пользователь хочет зарегистрироваться и вводит свою электронную почту, он не должен уже существовать в базе данных MySQL.Я пытаюсь создать свой код с помощью подготовленных операторов.

Когда пользователь вводит электронное письмо, которое уже существует в базе данных, я хочу, чтобы оно отправило пользователя обратно на ту же страницу регистрации с функцией заголовка с каким-то видомошибка.Я попытался сохранить количество строк в переменной $ resultcheck и проверить, есть ли столбцы с тем же адресом электронной почты больше 0 (если он уже существует).

Вот код:

$query = "SELECT * FROM users WHERE Mail=?;";
        $stmt = mysqli_stmt_init($conn);
        if(!mysqli_stmt_prepare($stmt, $query))
        {
            header("Location: ../registrering.php?error=sqlerror");
            exit();
        }
        else
        {
            mysqli_stmt_bind_param($stmt, "s", $mail);
            mysqli_stmt_execute($stmt);
            mysqli_stmt_store_result($stmt);
            $resultCheck = mysqli_stmt_num_rows($stmt);
            if($resultcheck > 0)
            {
                header("Location: ../registrering.php?error=emailtaken");
                exit();
            }
            else {...}

Когда я, однако, представил учетную запись с уже существующим электронным письмом в базе данных, я успешно ввел другой столбец в таблицах пользователей и получил более одного столбца с одним и тем же электронным письмом.

Ответы [ 2 ]

2 голосов
/ 28 апреля 2019

Вы присваиваете $resultCheck, а затем проверяете другую переменную с именем $resultcheck, которая всегда будет 0.

Таким образом, ваша ошибка - опечатка в именовании переменной.

0 голосов
/ 28 апреля 2019

Помимо проверки с помощью SELECT SQL. Вы должны установить столбец в MySQL уникальным. Смотри https://www.w3schools.com/sql/sql_unique.asp.

...