0

私はこの問題をたくさん探していました!しかし、この問題を解決するのに実際に役立つものは何もありませんでした。

私は常に次のエラーを受け取ります:「致命的なエラー:非オブジェクトでのメンバー関数query()の呼び出し」

私は次のコントローラーを持っています:

<?php
class Station extends CI_Controller {

    function __construct($params=array()) {
        parent::__construct();

        session_start();

        $this->load->library('parser');
        $this->load->helper(array('form', 'url'));
    }

    public function index() {
        $this->tpl_data['location'] = $this->stationmodel->getLocations()->all;
        $_SESSION['location'] = $this->tpl_data['location'];


        $this->load->view('station', $this->tpl_data);
    }
}

?>

そして次のモデル:

<?php
class StationModel extends CI_Model {

    function __construct() {
        parent::__construct();
    }

    public function getLocations() {
        $query = $this->db->query("SELECT * FROM location WHERE City_IATA = 'MUC'");
        var_dump($query);

        // Just for test purposes!
        foreach($query->result() as $row) {
            echo $row->Location_Name_DE . '<br />';
        }
    }
}

?>

autoload.phpで、データベースモジュールをロードします。

$autoload['libraries'] = array('database');

また、データベースモジュールをコントローラーに直接ロードしようとすると、同じエラーが発生します。

私のdatabase.php:

$active_group = 'default';
$active_record = TRUE;

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '****';
$db['default']['database'] = 'comvel';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

誰でも私を助けることができますか?

前もって感謝します!

4

2 に答える 2

1

$params=array()コントローラーで、から削除してみてくださいfunction __construct($params=array())

__construct() {}また、何もせず、問題を引き起こす可能性があるため、モデルから を削除します。

于 2012-04-24T12:52:07.917 に答える
0

これは奇妙なものです。あなたはすべてを正しくやったようです。

コンストラクターを完全に削除してみましたか?私の推測では、コンストラクターが何らかの理由でモデルがdbオブジェクトで初期化されるのを妨げていると思います。初期化コードを実行する必要がある場合は、フックなどのフックpre_controllerを使用する方が適切な場合があります。

于 2012-04-24T13:13:06.400 に答える