我正在使用带有sqlite的codeigniter,我已经创建了一个用于连接sqlite数据库的新库。只有在设置了会话时,sqlite数据库才会连接。
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
错误。
CONTROLLER
$sessiondata = array('user' => $userid);
$this->session->set_userdata($sessiondata);
$insert = $this->user_model->insert($data);
答案 0 :(得分:0)
所有这一切看起来都是合法的,如果你在页面/控制器加载时设置你的用户数据意味着已经加载了librairies和其他资产。因此,当加载userdb库时,尚未设置会话。
你有两种方法可以解决这个问题:在加载你的控制器之后尝试加载你的库,但是对于一个db库,这最好是在你的配置文件中,以便它自动加载。
另一种方法是在会话设置后重新加载或重定向当前的PAGE。这样您就可以使用db库
了希望能帮到你
NWK