Я пытаюсь запретить пользователям на сайте, на котором я работаю, с дублированными адресами электронной почты. Это метод, который я использую:
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?
Попробуйте следующее:
SELECT * FROM... (обратите внимание на звездочку после SELECT). Я не думаю, что вы вызываете какие-либо записи (кроме первой записи в "Пользователи" ), как вы ее запускаете. Я мог ошибаться, но все равно даю ему шанс.
похоже, что вы никогда не получите соответствие по электронной почте. Итак,
mysql_num_rows( $result ) == 0
всегда будет истинным.
попробовать
echo $sql
чтобы убедиться, что ваш SQL выглядит правильно. Возможно, вы не можете правильно передать $emlAd для createUser()
mysql_real_escape_string
. Это то, что вы хотите привыкнуть использовать рано.