PHP mysqli sorgu hatası?

2 Cevap php

Kullanıcı adı ve şifre doğru ve veritabanında, sadece hatayı dönen tutar olsa da, hey Bu PHP5 ve mysqli kullanarak, benim giriş script, ben sadece benim sorguda hataları lekelenme yardım vardı, ama yine de bana giriş izin vermez : Kullanıcı adı ve şifre bizim db herhangi eşleşmiyor. Ama onlar lol ... Vücudun herhangi bir sorun nokta olabilir biliyorsun?

//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 Cevap

Bu en güvenilir şekilde yapmak için, ben asıl hata işleme ayarlarına göre bu hatayı tetiklemek için öneririm:

//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);

o trigger_error fonksiyonunu unutmayın. Bu standart hata çıktı hata mesajı getirecek. Geliştirme PC bu tarayıcının ekran veya üretim sunucusunda bir günlük dosyası olacaktır.

Yerine

SELECT ... FROM uyeler WHERE = username = ...

Bu olmalı

SELECT ... FROM uyeler WHERE username = ...

Bu gibi sorunları almaya devam ederseniz, bir değişkene sorgu kaydetmeyi deneyin ve yankı, böylece veritabanı yönetim aracı içine kopyalayıp yapıştırın ve herhangi bir sorgu hata olup olmadığını görmek.