PHP / MYSQL дублирующий адрес электронной почты

0

Я пытаюсь запретить пользователям на сайте, на котором я работаю, с дублированными адресами электронной почты. Это метод, который я использую:

function createUser( $emlAd )
{
     $sql = "SELECT FROM Users WHERE email='$emlAd'" ;

     $result = mysql_query( $sql ) ;

     if( mysql_num_rows( $result ) > 0 )
     {
 die( "There is already a user with that email!" ) ;
     }//end if

     //rest of function
}//end createUser

Этот код не выполняет свою задачу, и пользователь все еще может создать учетную запись с уже используемым письмом. Странно то, что когда я изменяю условие if на:

mysql_num_rows( $result ) == 0 

Пользователь не может создать учетную запись с любым адресом электронной почты. Почему код не передает управление блоку if, если число строк больше 0?

  • 0
    Попробуйте выполнить сброс $ sql перед выполнением и посмотрите, даст ли это вам лучшее представление о том, почему он не находит никаких результатов.
  • 0
    Обязательно взгляните на mysql_real_escape_string . Это то, что вы хотите привыкнуть использовать рано.
Показать ещё 1 комментарий
Теги:
database

2 ответа

2
Лучший ответ

Попробуйте следующее:

SELECT * FROM... (обратите внимание на звездочку после SELECT). Я не думаю, что вы вызываете какие-либо записи (кроме первой записи в "Пользователи" ), как вы ее запускаете. Я мог ошибаться, но все равно даю ему шанс.

  • 0
    Это выглядит очевидным, когда вы указываете на это :-). +1 для вас.
  • 0
    Это действительно глупая ошибка. Спасибо!
Показать ещё 1 комментарий
0

похоже, что вы никогда не получите соответствие по электронной почте. Итак,

mysql_num_rows( $result ) == 0 

всегда будет истинным.

попробовать

echo $sql

чтобы убедиться, что ваш SQL выглядит правильно. Возможно, вы не можете правильно передать $emlAd для createUser()

Ещё вопросы

Сообщество Overcoder
Наверх
Меню