0

Здравствуйте. Сделал проверку пользователей на существование в регистрации, вот такой скрипт

$search = mysql_query("SELECT * FROM users WHERE mobPhone='.$mobPhone.' AND email='.$email.'");
$seachf = mysql_fetch_array($search);
if (empty($seachf)) {

}

А проблема в том, что он не обрабатывает условие, то есть если такой пользователь есть, то он все равно его регистрирует.

3 ответа 3

2

Лучше проверять количество, чем вытаскивать саму запись:

$search = mysql_query("SELECT COUNT(*) cnt FROM users WHERE mobPhone='" . $mobPhone . "' AND email='" . $email . "'");
$seachf = mysql_fetch_array($search);

if($seachf['cnt'] == 0){
  echo 'такого пользователя нет';
}
4
  • @ua6xh, У Вас запрос к БД кривой :)
    – ReinRaus
    16 сен 2014 в 16:45
  • @ReinRaus - точняк) Сейчас поправим, спс. 16 сен 2014 в 16:46
  • Да, согласен, что кривой) Исправил) Точки убрал вообще, щас все норм работает.
    – cnofss
    16 сен 2014 в 16:50
  • Лучше делать select 1 where exists или limit 1 (извините за некропостофилию)
    – etki
    25 сен 2014 в 6:56
1

У Вас запрос к БД кривой. Заострите внимание на изучении конкатенации строк в php и их обработку.
Например, телефон 71234567890 и мыло [email protected] , тогда в MySQL уйдет такой запрос:

SELECT * FROM users WHERE mobPhone='.71234567890 .' AND email='[email protected].'

Естественно, что всегда нет выборки для такого запроса.

1

Попробуйте так

$search = mysql_query("SELECT * FROM users WHERE mobPhone='".$mobPhone."' AND email='".$email."'");
$prov=0;
$prov=mysql_num_rows($search);
if ($prov>0)
 {
   // код если в запрос что-то нашел
 }
else
 {
  // код если запрос ничего не нашел
 }

Описание команды http://php.net/manual/ru/function.mysql-num-rows.php

Ваш ответ

By clicking “Отправить ответ”, you agree to our terms of service and acknowledge you have read our privacy policy.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками или задайте свой вопрос.