2013-06-18 3 views
0

Я использую codeigniter с sqlite, и я создал новую библиотеку для подключения базы данных sqlite. База данных sqlite будет подключаться только в том случае, если сеанс установлен.Загружается библиотека загрузки Codeigniter после сеанса

БИБЛИОТЕКА (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

Все это кажется законным, если вы установите UserData, пока страница/контроллер загружается это означает, что librairies и другие активы, которые были загружены уже. Поэтому, когда загружается ваша библиотека userdb, сеансов пока нет.

У вас есть два способа исправить это: попробуйте загрузить свою библиотеку после загрузки контроллера, но для библиотеки db лучше бы быть в вашем файле конфигурации, чтобы он был загружен автоматически.

Другой способ - перезагрузить или перенаправить текущую СТРАНИЦУ после сеанса isset. Так что вы можете использовать ваш дб библиотека

Надежда, что помогает Вам

NWK

Смежные вопросы