2014-08-29 18 views
-1

我有這個在我的BD:計數的追隨者的數量和打印PHP

如下:12,13,2,4(這是一個用戶的下面的列表中的用戶ID)

我想統計有多少個關注者擁有單個用戶。

我有這樣的代碼:

$followers = $db->fetch_field($db->simple_select('users', 'COUNT(*) AS followers' , "buddylist IN ($useruid) "), 'followers'); 
    $Followers = $followers; 

這隻能如果列表的第一個數字是相同的是useruid $。 實施例:

$ useruid = 1, 好友列表= 3,2,1

$followers = $db->fetch_field($db->simple_select('users', 'COUNT(*) AS followers' , "buddylist IN ($useruid) "), 'followers'); 
     $Followers = $followers; 

的出把它的0

如果好友列表是1,2,3

輸出是一個。

怎麼了? :(

+0

你想一個PHP的解決方案?返回字符串,用逗號和計數位爆炸,否則SQL解決方案需要做類似的事情 – 2014-08-29 02:27:14

+0

sql或php :) – user3822116 2014-08-29 02:31:51

回答

0

你可以使用FIND_IN_SET()代替IN(),因爲IN會去找你的一組中比較字符串結構化字段,而您的字段是用逗號分隔的ID字符串。 FIND_IN_SET()會看那個字符串中:

$followers = $db->fetch_field(
    $db->simple_select(
     'users', 
     'COUNT(*) AS followers', 
     "FIND_IN_SET($useruid, buddylist)" 
    ), 
    'followers' 
); 

See this related question.

+0

這是解決方案,謝謝! – user3822116 2014-08-29 03:31:03

-1

這是很難說,不知道你的數據庫的內容。

我想你在$ useruid用戶爲陣列

通過`破滅轉換您的數組字符串(「」,$ useruid )`和MySQL statment前替補$ useruid

,並就應該可以正常