В таблице mysql, если ввести команду
SELECT * FROM users WHERE email = 'hhh' OR phone = "+380714293848";
например, то будет пустой списочек, однако через код php почему-то у меня условие
if ($stmt->fetch())
срабатывает в любом случае, если был введён номер телефона, соответствующий моей регулярке. Т.е. даже если номера в таблице нет, то всё равно пользователь получает сообщение:
Вы уже оставили заявку
C имейлом такой проблемы нет, и лишь если он есть в таблице, то тогда пользователь получит сообщение:
Вы уже оставили заявку
Вот код
if(isset($_POST['name0']) && isset($_POST['email0']) && isset($_POST['phone0']))
{
$name = $_POST['name0'];
$email = $_POST['email0'];
$phone = $_POST['phone0'];
if((mb_strlen($name) > 1 && !ctype_digit($name) && preg_match('/^((([0-9A-Za-z]{1}[-0-9A-z\.]{1,}[0-9A-Za-z]{1})|([0-9А-Яа-я]{1}[-0-9А-я\.]{1,}[0-9А-Яа-я]{1}))@([-A-Za-z]{1,}\.){1,2}[-A-Za-z]{2,})$/u', $email) || preg_match('/((8|\+7)-?)?\(?\d{3,5}\)?-?\d{1}-?\d{1}-?\d{1}-?\d{1}-?\d{1}((-?\d{1})?-?\d{1})?/', $phone)))
{
$stmt = $connection->prepare("SELECT * FROM users WHERE email = ? OR phone = ?");
$stmt->bind_param("ss", $email, $phone);
$stmt->execute();
if ($stmt->fetch())
{
?>
<script>
Swal.fire({text: 'Вы уже оставили заявку',
confirmButtonColor: '#e31e35'})
</script>
<?php
$stmt->close();
}
//......
P.S. Я знаю, что для имени по-хорошему тоже стоит писать регулярку, а не делать всё моим путём...