2012-04-24 49 views
0

我正在四處尋找這個問題!但沒有什麼真正幫助解決這個問題。CodeIgniter模型類中的數據庫調用

我總是得到以下錯誤: 「致命錯誤:調用一個成員函數查詢()一個非對象」

我有以下控制器:

<?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'); 

而且當我嘗試在控制器中直接加載數據庫MODUL我會得到同樣的錯誤。

我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; 

任何人都可以幫我嗎?

在此先感謝!

+0

什麼返回var_dump? – Patroklo 2012-04-24 10:42:25

+0

你檢查了你的數據庫設置嗎? – 2012-04-24 10:43:23

+0

var_dump不會返回任何內容,導致它在var_dump之前死亡。 數據庫設置已檢查並罰款: -/ – Xederas 2012-04-24 11:09:49

回答

1

在您的控制器嘗試從function __construct($params=array())

去除$params=array()我也想從你的模型中刪除__construct() {}因爲它沒有做任何事情,可能會導致你的麻煩。

+0

感謝您的提示!我更改了控制器中的__construct,並從模型中刪除了__construct。但沒有任何改變。仍然收到錯誤。 – Xederas 2012-04-24 13:02:45

+0

在'$ this-> db-> query()'行之前嘗試var'dump' $ this-> db'。 – freshnode 2012-04-24 13:05:40

+0

var_dump($ this-> db)返回null。所以數據庫不會被初始化。但數據庫模塊在config/autload.php中設置,並且config/database.php中的參數也很好。我必須設置其他任何東西嗎? – Xederas 2012-04-24 13:27:54

0

這是一個奇怪的。看起來你已經做得很好。

你有沒有嘗試完全刪除構造函數?我的猜測是你的構造函數以某種方式阻止你的模型被db對象初始化。如果您需要運行一些初始化代碼,則可能更適合使用hook,例如pre_controller鉤子。