我正在尝试列出数据库中的数据,我需要在我的数组中使用变量,但是在回显它时我希望它删除最后一个逗号,但它似乎不起作用。
$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,
返回,所以我该怎么做?
答案 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,',')
答案 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
。