2013-10-07 49 views
-3

我在名为“users”的表中有一个名为“alerts”的db列,其中每个用户的警报数据已经被输入,从db获取唯一数据

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

的逗号分隔的数字是

现在我想获取具有一定的“PID”例如用户PID(邮ID) 444

我正在使用此查询;

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

现在的问题是,它取得的用户,但不是唯一的。例如,如果我正在搜索pid = 444,那么它会提取警报列中所有具有“4”的用户。我应该如何去寻找独特的用户?

+1

您需要规范化该数据。 – Kermit

+1

必须是多值列周。 –

+0

但为什么是-1? :/ english是我的第二语言,可能这就是为什么我无法正确解释问题的原因。 – user2854563

回答

3

使用本:

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

FIND_IN_SET(str,strlist)

+0

很好的答案!它的工作原理:) – user2854563

+0

现在我不知道我是否很高兴这个设施存在,或令人感到沮丧,有人认为它应该。 :( –

0

那么,如果你不能修复您的设计,摆脱了多值列。

与'4'或Like'4'一样,%'或类似于'%,4'或类似'%,4'的都可以。

现在你知道为什么更多的有经验的开发畏缩当他们看到有人再次犯这样的错误......