2013-10-07 65 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'的都可以。

現在你知道爲什麼更多的有經驗的開發畏縮當他們看到有人再次犯這樣的錯誤......