2013-05-26 22 views
-3

我有這個表只顯示用戶在一定數量的標記(PHP,SQL)

table 'users' 

id  name   tag 
1  kfir   2,4,7,4 
2  avi   1,3,2,5 
3  sara   6,8,9,3,5 

我怎麼只顯示用戶標記下的數字「5」?

我的代碼

$result_total = mysql_query("select * from users") or die(mysql_error()); 
$total = mysql_num_rows($result_total); 
+4

斯普利特標記字段到一個單獨的表,所有的問題都會消失。每當開發者在數據庫文本字段中放入逗號分隔數據時,達賴喇嘛都會吃一隻小貓。 –

+0

你能舉個例子嗎? – user2398456

+1

這是基本的知識,每個基本的在線SQL課程都會包含它的例子。 –

回答

2

這樣做:

$result_total = mysql_query("SELECT * FROM `users` WHERE FIND_IN_SET('5',`tag`)"); 
$total = mysql_num_rows($result_total); 

也儘量不要使用MySQL和使用庫MySQLi代替。

+1

-1,針對真正問題的貼切解決方法,此運算符只應[與真實集合一起使用](http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_find-in -組)。 –

+0

謝謝!有用! :) – user2398456

+0

@NielsKeurentjes,我用它甚至'文本'字段類型,它工作得很好。那麼它有什麼問題? – SAVAFA

1

此外,對於非我-SQL具體的解決方案,你可以使用:

select * from users where ','+tag+',' like '%,5,%' 
+0

如果'5'剛剛開始,像'5,6,8'(甚至是末尾)怎麼辦? – SAVAFA

+1

它仍然有效,因爲我們在上面的標記字段(','+ tag +',')之前添加了一個逗號。這確保標籤前後總是有逗號。 – Omaer