2012-03-12 6 views
0

これは良い選択肢ではありませんが、これを行う方法はありません。シリアル化された配列を持つフィールド内の値を検索するクエリを作成します

私はcakephpとそのデータベースセッションを使用します。セッションのすべてのデータをシリアル化された配列として保存されている、何かのように:

Config|a:3:{s:9:"userAgent";s:32:"c25774da215a84965aadcfd075489db8";s:4:"time";i:1331594676;s:7:"timeout";i:10;}Message|a:0:{}Auth|a:1:{s:7:"Usuario";a:20:{s:10:"id_usuario";s:4:"6658";s:6:"nombre";s:6:"Master";s:8:"apellido";s:4:"User";s:5:"login";s:11:"master-user";s:16:"fecha_nacimiento";s:10:"1998-08-03";s:14:"fecha_registro";s:10:"0000-00-00";s:13:"hora_registro";s:8:"00:00:00";s:4:"pais";s:1:"7";s:9:"provincia";s:2:"CA";s:6:"cuidad";s:5:"dfdff";s:13:"codigo_postal";s:6:"123456";s:6:"ctpais";s:0:"";s:8:"ctcuidad";s:0:"";s:8:"telefono";s:8:"23324234";s:5:"grupo";s:1:"3";s:6:"activo";s:1:"1";s:11:"id_campania";s:3:"999";s:9:"sessiones";s:1:"1";s:10:"admin_camp";s:1:"0";s:6:"codigo";N;}} 

ユーザーがログインすると、私は彼がすでに起こってセッションを持っているかどうかを確認する必要があるので、私は、クエリの検索を行う必要がありますその値を含むレコードが存在する場合は、そのシリアル化された配列内のログインフィールドの値を検索します。

どうすればいいですか?

答えて

1

ストア

CREATE TABLE `session` (
    `session_id` VARCHAR(50) NOT NULL , 
    `user_login` VARCHAR (50) NOT NULL, 
    `session_serialized` TEXT NOT NULL , 
    PRIMARY KEY ( `session_id`) 
); 

のような別々の列にユーザログインあなたは今WHERE user_login = ?とのセッションを検索することができます。

セッションテーブルにアクセスできない、またはセッションテーブルにアクセスしたくない場合は、どのユーザーがどのsession_idを使用しているかを格納する2番目のテーブルを作成することもできます。あなたが複数のセッションを持っていないユーザーが欲しいと仮定:

CREATE TABLE `user_session` (
    `session_id` VARCHAR(50) NOT NULL , 
    `user_login` VARCHAR (50) NOT NULL, 
    PRIMARY KEY ( `user_login`) 
); 

私はシリアル化されたセッション・アレイによる検索をお勧めしません。

+0

ご返信いただきありがとうございます、私はそれを試してみましょう! – Albert

関連する問題