MySQL查询-检查数据行是否包含用户id
我有一个MySQL查询-检查数据行是否包含用户id,mysql,sql,Mysql,Sql,我有一个sessions表,我要做的是运行一个查询来检查某个帐户是否已登录 我的查询如下所示: SELECT id FROM sessions WHERE data LIKE '%4%' 但是对于这样的查询,如果用户id为“14”已登录,则该查询将返回True。如何检查某个数字是否存在并完全匹配?在搜索中包括分隔符: WHERE data LIKE '%:4;%' 为什么不在会话表中添加另一个user_id字段 例如: 我有一个网站,用户一次只能从一个位置登录。如果他们尝试从另一个位置登
sessions
表,我要做的是运行一个查询来检查某个帐户是否已登录
我的查询如下所示:
SELECT id FROM sessions WHERE data LIKE '%4%'
但是对于这样的查询,如果用户id为“14”已登录,则该查询将返回True。如何检查某个数字是否存在并完全匹配?在搜索中包括分隔符:
WHERE data LIKE '%:4;%'
为什么不在会话表中添加另一个user_id字段 例如: 我有一个网站,用户一次只能从一个位置登录。如果他们尝试从另一个位置登录(即启动新会话),那么我会终止他们以前的所有登录 因此,作为我登录脚本的一部分:
// 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作为会话中的附加字段固定到我的用户表中。。。它更加规范化,可以让您快速查询“当前使用此站点的用户”而无需太多的解析和繁琐。
与完全匹配,这不是=
符号的作用吗从会话中选择id,其中data='something'
@JimmyPena我现在知道了,有一个data
列包含(gasp)多个信息位!您的数据库结构不好,您不应该在一列@Puggan Se中存储多个属性/值:会话表通常在顶部有自己的序列化/抽象层。上面我们看到的是基于DB的会话存储的标准。但是,我同意,如果DB(而不是会话)查询将在其上执行,则可以根据情况添加另一个字段。有关何时/为什么添加字段并打破会话表的标准表单的示例,请参见我的答案。