2013-09-06 6 views
1

У меня есть эта функция в PHP:MySQL запрос не возвращая ничего

function login($email, $password) { 
    $email = sanitize_data($email); 
    $password = sanitize_data($password); 

    return (mysql_result(mysql_query("SELECT COUNT(`id`) FROM `registration` WHERE `email` = '$email' AND `password` = '$password'"),0) === 1) ? true : false; 
} 

Я звоню его от условного оператора, что я уверен, что это нормально, потому что, если я изменю правда ложных вещей продолжать идти, как они должны , Я уверен, что ошибка здесь где-то, я несколько раз проверял свои переменные, и я новичок в MySQL, поэтому я, вероятно, неправильно использую команду или что-то в этом роде.

Функция должна возвращать значение true, если запрос содержит не менее 1 строки с такой комбинацией электронной почты и пароля, но каждый раз возвращает false.

Это функция sanitize_data(), несмотря на то, что я уже пытался избавиться от него, и ничего не произошло:

function sanitize_data ($data) { 
    return mysql_real_escape_string($data); 
} 

И остальная часть соответствующего кода:

if (empty($_POST) === false) { 
$email = $_POST['email']; 
$password = $_POST['password']; 

if(empty($email) === true || empty($password) === true) { 
    $errors[] = 'You need to enter a username and a password'; 
} else if (email_exists($email) === false){ 
    $errors[] = 'Your email is not registered'; 
} else { 
    if(login($email, $password) === false) { 
     $errors[] = "That username/password combination doesn't exist"; 
    } 

} 

}

HTML:

<form action='' method='POST'> 
    <input type='text' name='email' placeholder='E-Mail' class='form-email' /> 
    <input type='password' name='password' placeholder='Password' class='form-password' /> 
    <input type='submit' name='sbmit' class='form-submit' /> 
</form> 
+0

Потеряйте 'COUNT()' в своем запросе и используйте 'mysql_num_rows'. Еще лучше, не используйте 'mysql_ *' вообще. –

ответ

1

нет никакой проблемы с SQL Query

взглядом на SQL Query который исполняющий штраф, как освобожденный см SQL Fiddle

я думаю, что строгое сравнение === может быть пристанет код попытаться изменить код с

 mysql_result(mysql_query("SELECT COUNT(`id`) FROM `registration` WHERE `email` = '$email' AND `password` = '$password'"),0) == 1 

а также не использовать mysql_* устарел и уязвим для SQL-инъекции

+0

Это сработало! Благодаря! – user2738586

1
  1. «=== 1» Проверяет только один не по крайней мере один, не так ли?

  2. Вы пробовали sql-заявление f.e. в phpmyadmin или что-то подобное?

  3. Вы пытались отделить свой однострочный кабель в одной строке, чтобы сделать отладку намного проще?

  4. распечатал sql, который вы создаете?

Смежные вопросы