результаты некорректно возвращаются из запроса класса PHP при обработке другой функцией - PullRequest
1 голос
/ 24 сентября 2010

Работает следующее:

$user_list = new user_list();
$all_users_list = $user_list->getAllUsers();

Следующее не работает, и я не уверен, почему это не так:

$user_list = new user_list();

Вышеприведенное возвращает:

Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, object given on line 59

Классы для справки:

class dbo extends mysqli {

    public function __construct(){
        require('config_db.inc.php');
        parent::__construct($db_host, $db_user, $db_pass, $db_name);

        if (mysqli_connect_error()) {
            die("Connect Error: (".mysqli_connect_errno().") - ".mysqli_connect_error());
        }
    }



}

class user_list extends user {

    var $table_name = "cms_users";  

    function __construct($group = "") {
        if ($group == "") {
            return $this->getAllUsers();
        } else {
            $this->getUsersFromGroup($group);
            return $this->result;
        }
    }   

    function getAllUsers() {
        $dbh = new dbo();
        $sql = "SELECT * FROM {$this->table_name}";
        return $dbh->query($sql);
    }

    function getUsersFromGroup($group) {
        $dbh = new dbo();
        $sql = "SELECT * FROM {$this->table_name} WHERE group=$group";
        return $dbh->query($sql);
    }


}

1 Ответ

1 голос
/ 24 сентября 2010

Проблема заключается в повторном использовании имени переменной $user_list для различных целей:

$user_list = new user_list();
// $user_list is now an object

$user_list = $user_list->getAllUsers();
// $user_list is now a mysqli resource

...

// line 59: code that expects $user_list to be a mysqli resource

Сравнить с:

$user_list = new user_list();
// $user_list is now an object

...

// line 59: code that expects $user_list to be a mysqli resource

Вы не можете ничего вернуть из конструктора. Ключевое слово new всегда даст вам объект, возвращаемые значения из конструктора никуда не денутся.

У вас также есть ошибка в if ($group = ""), вы имеете в виду if ($group == "").

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