0

我正在将 codeigniter 与 sqlite 一起使用,并且我创建了一个用于连接 sqlite 数据库的新库。只有设置了会话,sqlite 数据库才会连接。

图书馆(用户数据库)

$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);
4

1 回答 1

0

所有这一切似乎都是合法的,如果您在页面/控制器加载时设置用户数据,则意味着库和其他资产已经加载。因此,当您的 userdb 库被加载时,还没有设置会话。

您有两种方法可以解决此问题:在加载控制器后尝试加载库,但对于 db 库,最好将其放在您的配置文件中,以便自动加载。

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

希望对你有帮助

NwK

于 2013-06-18T08:11:40.953 回答