2015-09-21 23 views
1

我想從我的數據庫列表數據,我需要用我的數組裏面變量,但呼應,當我希望它刪除最後一個逗號,但它不」 t似乎工作。獲得數據庫之後,從陣列中刪除最後一個逗號導致

$forum_usersonline = $kunaiDB->query("SELECT * FROM users WHERE user_loggedin = '1'"); 
       while($forum_usersonline_fetch = $forum_usersonline->fetch_array()) { 
        $usersonlineuname = $forum_usersonline_fetch["user_name"]; 
        $onlinelist = array($usersonlineuname, ' '); 
        echo implode($onlinelist, ','); 
       } 

它總是返回user1, user2,所以我應該怎麼做?

+1

您正在使用內爆以錯誤的方式使用破滅(「」,$ onlinelist); –

+0

@SunilPachlangia這使得在這種情況下沒有區別。 –

+0

@EliasNicolas這是我知道每個變量 –

回答

1

你可以很容易地在做這個工作SQL。如果你的數據庫的MySQL嘗試以下

SELECT GROUP_CONCAT(user_name) as user_name FROM users WHERE user_loggedin = '1' 

,或者如果你的數據庫是Postgres的嘗試以下

SELECT string_agg(user_name, ',') as user_name FROM users WHERE user_loggedin = '1' 

上面的查詢結果返回逗號分隔USER_NAME。

+0

這實際上工作得很出色。我不知道你可以在簡單的查詢中做到這一點,我很感激! –

+0

我同意這個答案。最好的方法是在數據庫級別執行此操作。 – CodeGodie

0

你可以使用chop();從字符串的右端刪除字符。

一個例子:

<?php 
$str = "Random String Ending With,"; 
echo $str . "<br>"; 
echo chop($str,","); 
?> 

或者你可以使用rtrim();,如:

<?php 
$str = "Random String Ending With,"; 
echo $str . "<br>"; 
echo rtrim($str,','); 
?> 

或者你也可以使用substr,如:

<?php 
$str = "Random String Ending With,"; 
echo substr($str,0,-1)."<br>"; 
?> 
+0

後添加逗號的唯一途徑當我嘗試這一點,刪除所有的逗號,而不是最後的結果的逗號。 –

+0

@ P.Nick如果這是我們所談論的,那麼它應該只刪除最後一個字符串。我會在一會兒加一個小提琴。 – user5173426

+0

更好地利用'rtrim'代替,或者你可以用'substr'代替 –

0

問題是你在做while循環內的implode,它應該在構建最終數組後完成。這是我會做:

$forum_usersonline = $kunaiDB->query("SELECT * FROM users WHERE user_loggedin = 1"); 

while ($row = $forum_usersonline->fetch_array()) { 
    $onlinelist[] = $row["user_name"]; 
} 

echo implode($onlinelist, ","); 

然而,正如你應該做你的數據庫查詢時使用CONCAT這不應該是這樣的。