Ошибка PHP - сценарий входа - PullRequest
1 голос
/ 14 апреля 2010

Я создаю новый каталог скриптов / членов логина.

Я создаю его с нуля без каких-либо рамок (совет по этому вопросу также будет признателен).

Ситуация:

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

Этот фрагмент кода продолжает выдавать ошибку (в частности, последняя строка):

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

При выводе запроса я получаю:

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

EDIT: Спасибо всем. Проблема была в именах столбцов базы данных и именах столбцов, на которые я ссылался.

Ответы [ 4 ]

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

Ваш запрос не выполняется. Когда это происходит mysqli_query возвращает false (логическое значение) и когда передается mysqli_num_rows, вы получаете эту ошибку.

Напечатайте запрос непосредственно перед выполнением и проверьте правильность.

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

Учитывая, что mysqli_query возвращает false при сбое, и что $ data является логическим значением, здесь, я полагаю, во время выполнения вашего SQL произошла ошибка запрос.

Вы можете попробовать использовать mysqli_error, чтобы узнать, что это за ошибка:

$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;
}


Примечание: повторение сообщения об ошибке и умирание, как я сделал здесь, в порядке при разработке вашего сценария; но вы не должны делать это в производстве.

Вместо этого на производстве вы должны:

  • Записать ошибку в файл
  • Показать приятное сообщение пользователю
1 голос
/ 14 апреля 2010

Если у вас есть критический запрос, лучше всего добавить к нему кубик, например:

mysqli_query($dbc, $query) or die('Critical error on line #'. __LINE__ .' when attempting to login ...<br>'. mysql_error());
0 голосов
/ 14 апреля 2010

Вы пытались выполнить этот же запрос вручную через phpmyadmin или консоль? Какой результат вы получаете?

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