テーブルがsessions
あり、特定のアカウントがログインしているかどうかを確認するクエリを実行しようとしています。
私のクエリは次のようになります。
SELECT id FROM sessions WHERE data LIKE '%4%'
しかし、そのようなクエリでは、「14」の user_id がログインしている場合、そのクエリは True を返します。特定の番号が存在し、正確に一致するかどうかを確認するにはどうすればよいですか?
検索に区切り文字を含めます。
WHERE data LIKE '%:4;%'
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することができます...これはもう少し正規化されており、解析や手間をかけずに「現在このサイトを使用しているユーザー」クエリをすばやく実行できます。