MySQL не возвращается к моим потребностям - PullRequest
0 голосов
/ 08 августа 2011

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

function user_exists($email)
{
    $email = mysql_real_escape_string($email);
    $query = mysql_query("SELECT COUNT(`id`) FROM `imgit_users` WHERE `email`='$email'");

    return (mysql_result($query, 0) <= 1) ? true : false;
}

И я использовал это так:

if (user_exists($register_email) === true)
{
    echo 'Fail';
    $errors[] = 'The supplied email is already in use';
}   
else 
{
    if (empty($errors))
    {
        $user_id = user_register($register_username, $register_email, $register_password);
        $_SESSION['imgit_uid'] = $user_id;
        echo 'Okay';
    }
}

Мой скрипт продолжает возвращать «Хорошо» вместо «Неудача», даже если я каждый раз набираю одно и то же письмо. Идеи?

Ответы [ 4 ]

2 голосов
/ 08 августа 2011
return (mysql_result($query, 0) >= 1) ? true : false;

Поменяйте местами <= на> =

2 голосов
/ 08 августа 2011
return (mysql_result($query, 0) <= 1) ? true : false;

Итак, вы хотите вернуть true, если результат меньше или равен 1. Итак, если это 1 или 0? Возможно, есть ваша ошибка, чтобы проверить, если она меньше 1 и поменять местами true / false. Или проверьте, равен ли он 1.

1 голос
/ 08 августа 2011

Я бы предпочел не использовать COUNT(), чтобы проверить, используется ли уже электронная почта, вместо этого я бы использовал что-то вроде

function user_exists($email)
{
 $sql = sprintf( 
  'SELECT 1 FROM imgit_users WHERE email = \'%s\' LIMIT 0,1', 
  mysql_real_escape_string( $email ) 
 );
 $result = mysql_query( $sql );
 // add error handling
 return 1 === mysql_num_rows( $result );
}
1 голос
/ 08 августа 2011
return (mysql_result($query, 0) >= 1) ? true : false;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...