2013-06-18 45 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