Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL查询-检查数据行是否包含用户id_Mysql_Sql - Fatal编程技术网

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(而不是会话)查询将在其上执行,则可以根据情况添加另一个字段。有关何时/为什么添加字段并打破会话表的标准表单的示例,请参见我的答案。