设置会话后的Codeigniter加载库

时间:2013-06-18 07:59:37

标签: codeigniter session pdo sqlite static-libraries

我正在使用带有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);

1 个答案:

答案 0 :(得分:0)

所有这一切看起来都是合法的,如果你在页面/控制器加载时设置你的用户数据意味着已经加载了librairies和其他资产。因此,当加载userdb库时,尚未设置会话。

你有两种方法可以解决这个问题:在加载你的控制器之后尝试加载你的库,但是对于一个db库,这最好是在你的配置文件中,以便它自动加载。

另一种方法是在会话设置后重新加载或重定向当前的PAGE。这样您就可以使用db库

希望能帮到你

NWK