Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Не получается проверить номер в базе

Сергеевич Гуру (3899), на голосовании 3 года назад
Добрый вечер. Нужна помощь. Суть в следующем, написал код, который добавляет нового клиента. Пытаюсь второй день реализовать ф-цию проверки номера телефона перед добавлением при котором если номер существует то запись не осуществляется. Ниже листинг:

<? echo "Добавить нового клиента


ФИО


Телефон


Электронная почта


Баллы


Сумма покупки


Дата рождения



";
include('html/gen_page_link.php');
include('config/connect.php');

//Переменные
$fio = $_POST['FIO']; //ФИО Клиента
$phone = $_POST['phone']; // Телефон
$email = $_POST['email']; // Почта
$ball = $_POST['ball']; //Стартовые баллы
$date_happy = $_POST['date_happy']; //День рождения
$sum_buy = $_POST['sum_buy']; //Сумма покупки
$ball = (($sum_buy / 100) * 10) + 150; //Начисления баллов

if (isset($_POST["FIO"]) && isset($_POST["phone"]) && isset($_POST["email"]) && isset($_POST["date_happy"]) && isset($_POST["sum_buy"]) )
{
$query_prov = "SELECT * FROM ".$db_table." WHERE phone = '.$phone.'";
$result = mysqli_query($mycqli_con, $query_prov);
$query_rows = mysqli_num_rows($result);
echo $query_rows;
if($query_rows >= 1)
{

echo "Электронная почта или телефон уже заняты";
include('config/close_connect.php');

}
else
{

$query_gen = "INSERT INTO ".$db_table." VALUES (NULL, CURRENT_TIMESTAMP, '$fio', '$phone', '$email', '$ball', '$date_happy', '$sum_buy')"; //Переменной присваиваем запрос
$result = mysqli_query($mycqli_con, $query_gen) or die("Ошибка" . mysqli_error($mycqli_con)); //Передача запроса в СУБД
include('config/close_connect.php');
echo "
Данные внесены";

}
}

?>

Сразу хочу обратить внимание на этот кусок кода:
$query_prov = "SELECT * FROM ".$db_table." WHERE phone = '.$phone.'"; // отправка запроса с введенными значением через форму
$result = mysqli_query($mycqli_con, $query_prov); // отправляю запрос
$query_rows = mysqli_num_rows($result); // По идее данная функция возвращает количество строк по результатам запроса.
echo $query_rows; // Вывод количества строк
if($query_rows >= 1) // Если количество строк равно или больше 1, то вывести сообщение об существовании номера в базе, иначе произвести запись.

Так вот, при выводе количество строк через echo $query_rows то на экран не выводиться даже 0. И соответственно некорректно работает условие if. Прошу кто знает помочь решить данную проблему
{
Голосование за лучший ответ
Саня Семенов Оракул (60497) 3 года назад
1)Каждый запрос обернуть в try /catch
2) После каждого запроса проверять были ли ошибки запроса и если были то выводить большое красное сообщение работу прекратить
3 использовать подготовленные запросы куда подставлять значения через bind
4) отказаться от использования устаревшей ныне библиотеки mysqli использовать PDO
5) для создания запроса хорошо бы пользоваться каким нибудь queryBiilder
6) обернуть всю эту обработку в отдельный класс и использовать его а не голый квери
Тогда ты увидишь в чем ошибка потомучто красное сообщение сложно пропустить
Похожие вопросы