У меня есть эта функция в 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>
Потеряйте 'COUNT()' в своем запросе и используйте 'mysql_num_rows'. Еще лучше, не используйте 'mysql_ *' вообще. –