Проверка наличия электронной почты в базе данных MySQLi с использованием переполнения стека

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

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

if ($_SERVER["REQUEST_METHOD"] == "POST") {
$database = new mysqli("localhost", "user", "dbpw", "dbname");
if($database->connect_error){
die( "Error connecting:" . $database->connect_error);
}

$email = $database->real_escape_string(htmlspecialchars($_POST["email"]));
$query = "SELECT email FROM Users WHERE email =$email";
$result = $database->query($query);
$numOfRows = $database->num_rows($result);
if($numOfRows > 0){
echo "Email already exists in our database.";
}else{
$query = "INSERT INTO Users (email) VALUES ('" . $email . "');
if(!$database->query($query)){echo("<p>Unable to add user for query: " . $query . " <br /> Error: " . $database->errno . " " . $database->error);}}

До вставки проверки электронной почты (оператор if ($ numOfRows)) моя база данных корректно обновлялась.

Однако после добавления моей попытки проверить электронную почту страница полностью сломалась. Моя база данных не будет обновляться с использованием уникальных паролей и не будет отображать отраженное сообщение «Электронная почта уже существует в нашей базе данных», если электронная почта была дубликатом. Страница будет загружаться, но только с базовым CSS-кодом верхнего и нижнего колонтитула, который я связал с каждой страницей.

1

Решение

Вместо того, чтобы использовать

$numOfRows = $database->num_rows($result);

использование

if($result ->num_rows)
{
}
1

Другие решения

Вы должны добавить одинарные кавычки вокруг переменной электронной почты. Как этот ‘$ email’. Проверьте код ниже.

$query = "SELECT email FROM Users WHERE email = '$email'";

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

1

По вопросам рекламы [email protected]