2012-04-16 3 views
0

私のサイトではセッションが使用されており、大量のユーザーデータを保存できるように情報をデータベースに保存するように設定しました。 このサイトは、MySQLおよびMSSQLデータベースに接続して、ユーザーの情報を取得します。セッションデータベースはMySQLデータベースにあり、この部分は動作しています。codeigniterのセッションテーブルに保存

サイトのロジックは: 1.ユーザが何かを検索すると、検索ボタンがコントローラの2つの機能に検索用語を送信するjQueryコードに添付されます。
2.機能1は、MSSQLデータベースにアクセスし、データを取得し、クエリとクエリの結果をセッションに保存し、クエリ結果をビューに返します。 3.関数2は、MySQLデータベースを照会する点を除いて全く同じです。

$this->session->set_userdata('get_function2_query',$lastquery); 
$this->session->set_userdata('get_function2_result',$query->result_array()); 

問題はファンクション1のコードは、セッションテーブルにデータを保存しないことです:

$this->session->set_userdata('get_function1_query',$lastquery); 
$this->session->set_userdata('get_function1_result',$query->result_array()); 

機能2のコードは、この行います

ファンクション1のコードは、これを行います。関数2のコードを削除すると、関数1のコードが機能します。

最後に、クエリの結果セットは小さいです。それでも、ci_sessionsテーブルの 'user_data'フィールドのデータ型をTEXTからMEDIUMTEXTに変更して、そこに詳細情報を格納できるようにしました。

誰でも手助けできますか?

ありがとうございます!

答えて

1

セッションにデータを格納するときは、シリアル化する必要があります。 $ query-> result_array()の結果は配列として格納され、文字列として格納しようとすると何らかの問題が発生する可能性があります。

serializeを呼び出してセッションの内外にプッシュするときにデータ構造を損なわないようにしてください。

+0

でのセッションとjQueryを使っていくつかの問題があるCodeIgniterの中のセッションのコードが自動的にシリアライズとアンシリアライズ機能取り扱うことが表示されますCodeIgniterのネイティブセッション http://codeigniter.com/wiki/Native_session

を使用して、それを解決しました。 – ShaneH

関連する問題