PHP MYSQLI ошибка запроса? - PullRequest
       5

PHP MYSQLI ошибка запроса?

0 голосов
/ 13 апреля 2010

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

//Check if the form has been submitted
    if (isset($_POST['login'])) 
    {   
        //Check if username and password are empty
        if ($_POST['username']!='' && $_POST['password']!='') 
        {       
            //Create query to check username and password to database
            $validate_user = $mysqli->query('SELECT id, username, password, active FROM users WHERE = username = "'.$mysqli->real_escape_string($_POST['username']).'" AND password = "'.$mysqli->real_escape_string(md5($_POST['password'])).'"');

            //We check if the query returns true
            if ($validate_user->num_rows == 1)
            {
                $row = $validate_user->fetch_assoc();

                //Check if the user has activated there account
                if ($row['activated'] == 1)
                {
                    $_SESSION['id'] = $row['id'];
                    $_SESSION['logged_in'] = true;
                    Header('Location: ../main/index.php');
                }
                //Show this error if activation returns as 0
                else {
                    $error = '<p class="error">Please activate your account.</p>';
                }
            }
                //Show this error if the details matched any in the db
                else {      
                    $error = '<p class="error">Your username and password are not in our database!</p>';        
                }
            }
                //Show this error if the username and password field have not been entered
                else {
                    $error = '<p class="error">Please enter your username and password.</p>';
                }
    }

Ответы [ 2 ]

3 голосов
/ 13 апреля 2010

вместо

ВЫБРАТЬ ... ИЗ пользователей ГДЕ = имя пользователя = ...

Это должно быть

ВЫБРАТЬ ... ОТ пользователей ГДЕ имя пользователя = ...

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

2 голосов
/ 13 апреля 2010

Чтобы сделать его наиболее надежным способом, я бы предложил вызвать эту ошибку в соответствии с основными настройками обработки ошибок:

//just in sake of readability
$user = $mysqli->real_escape_string($_POST['username']);
$pass = $mysqli->real_escape_string(md5($_POST['password']));

$sql = "SELECT id, username, password, active FROM users 
        WHERE username = '$user' AND password = '$pass'";

$res = $mysqli->query($sql) or trigger_error(mysqli->error.$sql);

обратите внимание, что функция trigger_error. это приведет сообщение об ошибке к стандартному выводу ошибки. На компьютере разработчика это будет экран браузера или файл журнала на производственном сервере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...