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 的另一个字段添加到会话表中?

示例:我有一个站点,用户一次只能从一个位置登录。如果他们尝试从另一个位置登录(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 到我的用户表......它更加规范化,让您可以快速进行“谁正在使用这个站点”查询,而无需过多的解析和大惊小怪。

于 2012-07-10T19:12:53.570 回答