MySQL查询 - 检查数据行是否包含user_id

时间:2012-07-10 19:06:21

标签: mysql sql

我有一个sessions表,我想要做的是运行查询来检查某个帐户是否已登录。

enter image description here

我的查询如下:

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

但是通过这样的查询,如果登录了“14”的user_id,则该查询将返回True。如何检查某个数字是否存在且完全匹配?

2 个答案:

答案 0 :(得分:4)

在搜索中包含分隔符:

WHERE data LIKE '%:4;%'

答案 1 :(得分: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到我的用户表...它更加规范化,让你快速做“谁正在使用这个网站”查询而不需要太多的解析和大惊小怪。