2013-06-18 44 views
0

我使用codeigniter和sqlite,並且我創建了一個用於連接sqlite數據庫的新庫。 sqlite數據庫只會在會話設置的情況下連接。設置會話後的Codeigniter加載庫

LIBRARY(USERDB)

$CI =& get_instance(); 
    if($CI->session->userdata('user')){ 
    $userId = $CI->session->userdata('user'); 
    $this->conDb = new PDO("sqlite:" . BASEPATH . "sqlitedb/" . $userId . "/data.db"); 
    }else{  
    $userId = ''; 
    } 

我用$query = $this->userdb->query($sql);

它工作正常,但問題是,查詢只有當會話創建否則之後的頁面被刷新工作執行查詢返回Call to a member function query() on a non-object錯誤。

控制器

$sessiondata = array('user' => $userid); 
    $this->session->set_userdata($sessiondata); 

    $insert = $this->user_model->insert($data); 

回答

0

這一切似乎合法的,如果你設置你的用戶數據,而頁/控制器加載這意味着librairies和其他資產已經被加載。所以當你的userdb庫加載時,還沒有設置會話。

有兩種方法可以解決這個問題:嘗試在加載你的控制器後加載你的庫,但是對於一個數據庫庫,這會更好地在你的配置文件中,以便它被自動加載。

另一種方式是在會話設置後重新加載或重定向您當前的PAGE。所以,你可以使用你的數據庫的庫

希望幫助您

NWK