PHP Hata - Giriş Script

4 Cevap php

Ben yeni bir oturum açma komut dosyası / üyeler dizini oluşturma.

Ben (bu konuda tavsiye de mutluluk duyacağız) herhangi çerçeveler olmadan sıfırdan oluşturma.

Durum:

// Look up the username and password in the database
    $query = "SELECT admin_id, username FROM admin WHERE adminname = '$admin_user' AND password = SHA1('$admin_pass')";
    $data = mysqli_query($dbc, $query);

    if (mysqli_num_rows($data) == 1) {

Bu kod biraz bana (özellikle son satırı) bir hata vererek tutar:

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in /home8/craighoo/public_html/employees/security/dir_admin.php  on line 20

Sorguyu yankılanan alıyorum:

SELECT admin_id, adminname FROM admin WHERE adminname = 'admin' AND password = SHA1('password')

EDIT: Thanks to everyone. The problem was in my Database column names and the column names I was referencing.

4 Cevap

Sizin sorgu yürütme başarısız oluyor. O mysqli_query döner false (boolean değer) olur ve geçirilen zaman mysqli_num_rows, bu hatayı olsun.

Hemen çalıştırmadan önce sorgu yazdırmak ve doğruluğu kontrol edin.

Başarısızlık, ve o $ veri mysqli_query döner false bir boolean olduğu göz önüne alındığında, burada, ben senin SQL yürütülmesi sırasında bir hata oluşumlu olduğunu varsayalım sorgu.

Sen mysqli_error Bu hata ne olduğunu öğrenmek için kullanarak deneyebilirsiniz:

$data = mysqli_query($dbc, $query);
if ($data !== false) {
    // Do whatever you want with $data
    if (mysqli_num_rows($data) == 1) {
        // 
    }
} else {
    echo mysqli_error($dbc);
    die;
}


Note : echoing the error message and dying, like I did here, is OK while developping your script ; but you should not do that in production.

Bunun yerine, üretim, yapmanız gerekenler:

  • Bir dosyaya hata oturum
  • Kullanıcıya hoş bir mesaj görüntüler

Eğer kritik bir sorgu var, bu yüzden gibi ona bir kalıp eklemek için en iyisi:

mysqli_query($dbc, $query) or die('Critical error on line #'. __LINE__ .' when attempting to login ...<br>'. mysql_error());

PhpMyAdmin veya konsola aracılığıyla elle aynı sorguyu çalıştıran denediniz mi? Ne sonuç alabilirim?