0

sqlite で codeigniter を使用しており、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 ライブラリがロードされた時点では、セッションはまだ設定されていません。

これを修正するには 2 つの方法があります: コントローラをロードした後にライブラリをロードしてみてください。ただし、db ライブラリの場合は、自動ロードされるように構成ファイルに含めることをお勧めします。

もう 1 つの方法は、セッションが設定された後に現在の PAGE をリロードまたはリダイレクトすることです。dbライブラリを使用できるように

あなたに役立つことを願っています

NwK

于 2013-06-18T08:11:40.953 に答える