Как исправить ошибку запроса через mysqli_fetch_array?

При выполнении приведенного ниже куска кода возникает следующая ошибка:
Warning</b>:  mysqli_fetch_array() expects parameter 1 to be mysqli_result, bool given in


Подскажите, как с этим бороться?
Сам запрос верный и возвращает строку с результатом.

...
$result = $DataBase->query("
   SELECT
      `auth`.`id`,
      `auth`.`login`,
      `auth`.`password`,
      `userdata`.`nickname`
   FROM `{$DataBase->DBName['DB_General']}`.`auth` `auth`
   LEFT JOIN `users` `userdata` 
      ON `userdata`.`id` = `auth`.`id`
   WHERE 
      `auth`.`login` = '{$login}' OR 
      `userdata`.`nickname` = '{$login}'
");

$my = $DataBase->mysqli_fetch_array($result);
...
  • Вопрос задан
  • 2008 просмотров
Решения вопроса 1
Green_King
@Green_King Автор вопроса
Получилось разобраться, ошибка крылась в методе:

Было:
/**
         * @param $query
         * @return bool
         */
        public function query($query)
        {
            return mysqli_query($this->DataBase, $query) or die (mysqli_error($query));
        }


Поменял на:
/**
         * @param $query
         * @return bool|\mysqli_result
         */
        public function query($query)
        {
            return mysqli_query($this->DataBase, $query);
        }
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@senior65
Переменная result возвращает false, попробуйте узнать какую ошибку он возвращает.
mysqli_error($result);
Мне кажется проблема связанная с кавычками в запросе
Ответ написан
Комментировать
mosesfender
@mosesfender
Меланхолик, параноик, падал с коек
Проверять надо, что находится в $result.

UPD.
Сам запрос верный и возвращает строку с результатом

Как это "строку с результатом"?
Ответ написан
irishmann
@irishmann
Научись пользоваться дебаггером
Эта ошибка возникает, если запрос не может быть выполнен. Лично мне запрос вообще не нравится, особенно этот кусок:
FROM `{$DataBase->DBName['DB_General']}`.`auth` `auth`

А тут потенциальная угроза SQL-injection
WHERE 
      `auth`.`login` = '{$login}' OR 
      `userdata`.`nickname` = '{$login}'
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы