Проверьте наличие дубликатов, PHP и MySQL

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

 $con=mysqli_connect("xxxx.com","xxxx_xxx","xxxx","yyyyy_");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}$firstname = mysqli_real_escape_string($con, $_POST['firstname']);
$lastname = mysqli_real_escape_string($con, $_POST['lastname']);
$password = mysqli_real_escape_string($con, $_POST['password']);
$email = mysqli_real_escape_string($con, $_POST['email']);
$address = mysqli_real_escape_string($con, $_POST['address']);
$postcode = mysqli_real_escape_string($con, $_POST['postcode']);
$country = mysqli_real_escape_string($con, $_POST['country']);
$phonenumber = mysqli_real_escape_string($con, $_POST['phonenumber']);
$rating = mysqli_real_escape_string($con, $_POST['rating']);

$sql="INSERT INTO customers (firstname, lastname, password, email, address, postcode,   country, phonenumber, rating)
VALUES ('$firstname', '$lastname', '$password', '$email', '$address', '$postcode', '$country', '$phonenumber', '$rating')";

if (!mysqli_query($con,$sql)) {
die('Error: ' . mysqli_error($con));
}
echo "1 record added";

mysqli_close($con);

-3

Решение

Здесь используйте готовые заявления метод и num_rows().

$con = new mysqli("localhost", "user", "password", "database");
if ($con->connect_errno) {
echo "Failed to connect to MySQL: (" . $con->connect_errno . ") " . $con->connect_error;
}

$check_email = $con->prepare("SELECT * FROM customers WHERE email=?");
$check_email->bind_param("s", $email);
$check_email->execute();
$check_email->store_result();
$row_check = $check_email->num_rows;

if($row_check  > 0 ) {

// your error message or make it die.

$check_email->close();
$con->close();

}

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


или же:

$check_email = mysqli_query($con, "SELECT * FROM customers where email= '".$email."' ");

$numrows=mysqli_num_rows($check_email);

if($numrows > 0){
die("Email exists already.");
}

else {

echo "Does NOT exist."; // continue and insert into DB

}

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

4

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

использование Выбрать оператор для извлечения строк с входным адресом электронной почты и проверки, является ли количество строк> 0.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector