У меня есть следующий код, который отлично работает. Я хочу, чтобы пользователь получил сообщение об ошибке, если введенный им адрес электронной почты уже существует в базе данных!
Спасибо!
$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);
Здесь используйте готовые заявления метод и 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
}
Использование метода подготовленных утверждений лучше и безопаснее.
использование Выбрать оператор для извлечения строк с входным адресом электронной почты и проверки, является ли количество строк> 0.