-3

我在名为“users”的表中有一个名为“alerts”的数据库列,其中输入了每个用户的警报数据,例如;

UserA -> 1,2,3,4,5,6
UserB -> 33,44,22
UserC -> 333,444,555

逗号分隔的数字是 pid (Post ID)

现在我想获取具有特定“pid”的用户,例如 444

我正在使用这个查询;

$query = $db->query("SELECT uid FROM users WHERE alerts LIKE '%{$pid}%'");
$uid = $db->fetch_array($query);

现在的问题是,它确实获取了用户,但不是唯一的。例如,如果我正在搜索 pid = 444,那么它会获取所有在警报列中具有“4”的用户。我应该如何搜索唯一用户?

4

2 回答 2

3

用这个:

$query = $db->query("SELECT uid FROM users WHERE FIND_IN_SET('{$pid}',alerts);

FIND_IN_SET(str,strlist)

于 2013-10-07T12:36:46.123 回答
0

好吧,如果您无法修复您的设计以摆脱多值列。

Like '4' or Like '4,%' or like '%,4' or like '%,4' 会这样做。

现在您知道为什么更有经验的开发人员在看到有人再次犯此错误时会畏缩......

于 2013-10-07T12:44:00.720 回答