3

テーブルがsessionsあり、特定のアカウントがログインしているかどうかを確認するクエリを実行しようとしています。

ここに画像の説明を入力

私のクエリは次のようになります。

SELECT id FROM sessions WHERE data LIKE '%4%' 

しかし、そのようなクエリでは、「14」の user_id がログインしている場合、そのクエリは True を返します。特定の番号が存在し、正確に一致するかどうかを確認するにはどうすればよいですか?

4

2 に答える 2

4

検索に区切り文字を含めます。

WHERE data LIKE '%:4;%'
于 2012-07-10T19:07:49.047 に答える
1

user_idの別のフィールドをセッションテーブルに追加してみませんか?

例:ユーザーが一度に1つの場所からしかログインできないサイトがあります。彼らが別の場所からログインしようとすると(つまり、新しいセッションを開始する)、私は以前のログインをすべて強制終了します。

したがって、ログインスクリプトの一部として:

// log this user out of any other active sessions
$sql = sprintf("DELETE 
    FROM sessions 
    WHERE id_user=%s", 
    mysql_real_escape_string($_SESSION['id_user'])
);

// Associate this session with this user
$sql = sprintf("UPDATE sessions 
    SET id_user=%s 
    WHERE id=%s", 
    mysql_real_escape_string($_SESSION['id_user']), 
    session_id()
);

そのため、セッションの追加フィールドとしてid_userをユーザーテーブルにFKすることができます...これはもう少し正規化されており、解析や手間をかけずに「現在このサイトを使用しているユーザー」クエリをすばやく実行できます。

于 2012-07-10T19:12:53.570 に答える