我有一张sessions
桌子,我想做的是运行查询以检查某个帐户是否已登录。
我的查询如下所示:
SELECT id FROM sessions WHERE data LIKE '%4%'
但是对于这样的查询,如果“14”的 user_id 已登录,则该查询将返回 True。如何检查某个数字是否存在并完全匹配?
在搜索中包含分隔符:
WHERE data LIKE '%:4;%'
为什么不将 user_id 的另一个字段添加到会话表中?
示例:我有一个站点,用户一次只能从一个位置登录。如果他们尝试从另一个位置登录(IE 开始一个新会话),那么我会终止他们之前的所有登录。
所以作为我的登录脚本的一部分:
// 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 作为我的会话中的一个附加字段 FKed 到我的用户表......它更加规范化,让您可以快速进行“谁正在使用这个站点”查询,而无需过多的解析和大惊小怪。