获取数据库结果后,从数组中删除最后一个逗号

时间:2015-09-21 13:16:15

标签: php mysql arrays database implode

我正在尝试列出数据库中的数据,我需要在我的数组中使用变量,但是在回显它时我希望它删除最后一个逗号,但它似乎不起作用。

$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,返回,所以我该怎么做?

4 个答案:

答案 0 :(得分: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。

答案 1 :(得分:0)

使用rtrim(string,',')

供参考goto http://www.w3schools.com/php/func_string_rtrim.asp

答案 2 :(得分: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>";
?>

答案 3 :(得分:0)

问题是你在implode循环中正在进行while,它应该在构建最终数组之后在外面完成。这就是我要做的事情:

$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