2014-07-29 2 views
-1

Я пытаюсь написать немного кода, который проверяет, существует ли электронное письмо в моей таблице, но при этом возникает ошибка «Запрос был пуст». Кажется, я не могу найти, почему запрос возвращается пустым?Проверка наличия электронной почты, но возвращающая пустой запрос?

Я новичок в PHP и следую учебнику онлайн для этого, код, к которому я следую, кажется идентичным. Мой код:

recover1.php

<?php require_once('Connections/localhost.php'); ?> 
<?php 
    session_start(); 
    if(isset($_SESSION['MM_Username'])) { 
    header("Location: My_Account.php"); 
    die; 
} 
?> 

<?php include('functions2.php'); ?> 

<?php 
$mode_allowed = array('username', 'password'); 
if (isset($_GET['mode']) === true && in_array($_GET['mode'], $mode_allowed) == true) { 
    if (isset($_POST['email']) === true && empty($_POST['email']) === false) { 
     if (email_exists(($_POST['email'])) === true) { 
     echo "ok"; 
     } else { 
      echo '<div id="error"> We could not find that email address, please try again. </div>'; 
     } 
    } 
?> 

<?php 
} else { 
    header('Location: subscribe.php'); 
    exit(); 

} 
?> 

functions2.php

<?php 

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

function recover ($mode, $email) { 
    $email = sanitize($email); 
    $mode = sanaitize($mode); 
    $user_data = user_data(UserID_from_email($email), `Username`); 
    if ($mode == 'username') { 
     email($email, 'Your Username', "Hi/n As requested your username is " . $user_data['Username'] . "/n/n Infinity Crates"); 
    } else if ($mode == 'password') { 
     //recover password 
    } 
} 

function email_exists($email) { 
    $email = sanitize($email); 
    $query = mysql_query("SELECT COUNT (`UserID`) FROM `users` WHERE `Email` = '$email'"); 
    $result = mysql_query($query) or die(mysql_error()); 
    return (mysql_result($result, 0) == 1) ? true : false; 
} 

function UserID_from_email($email) { 
    $email = sanitize($email); 
    return mysql_result(mysql_query("SELECT `UserID` from `Users` WHERE `Email` = '$email'"), 0, `UserID`); 
} 

function email($to, $subject, $body) { 
    mail($to, $subject, $body, 'From: [email protected]');  
} 

?> 
+0

Первое, что я заметил: '$ Режим = sanaitize ($ режим);' вы опечатка дезинфицировать – Daan

+0

Спасибо за указание, что из –

ответ

2

Вы используете mysql_query 2 раза.

Сделать это:

function email_exists($email) { 
    $email = sanitize($email); 
    $query = "SELECT COUNT (`UserID`) FROM `users` WHERE `Email` = '$email'"; 
    $result = mysql_query($query) or die(mysql_error()); 
    return (mysql_result($result, 0) == 1) ? true : false; 
} 

Вы можете даже изменить вашу функцию как это:

function email_exists($email) { 
    $email = sanitize($email); 
    $result = mysql_query("SELECT * FROM `users` WHERE `Email` = '$email'") or die(mysql_error()); 
    return (mysql_num_rows($result) > 0) ? true : false; 
} 

Примечание: По умолчанию Mysql API является устаревшим из PHP 5.5. Вместо этого используйте PDO и Mysqli. Для получения дополнительной информации вы можете посмотреть на http://php.net/manual/en/mysqlinfo.api.choosing.php

0

Ваших функции необходимо либо глобализовать переменный ресурс mysql_connect или есть ресурс, передаваемый в функцию. Проверьте свой первый файл require_once и проверьте, хранится ли ресурс mysql_connect в переменной. Если нет, измените его, чтобы сохранить ресурс переменной, например $dbh, и изменить функции «email_exists», «sanitize» и «UserID_from_email», вставив global $dbh; в качестве первой строки в этих функциях.

+0

mysql_connect уже назначенную в этом файле, здесь: $ localhost = mysql_pconnect ($ hostname_localhost, $ username_localhost, $ password_localhost) или trigger_error (mysql_error(), E_USER_ERROR); Я попробовал puttin global $ localhost; но все еще есть проблема. –

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