我正在尝试创建一个函数来查询数据库并输出数组中的所有结果。出于某种原因,它只显示一个结果。
这是函数
function reguser_list() {
$query = mysql_query("SELECT `user_name` FROM `users` WHERE `active` = 1");
$reguser_names = mysql_fetch_assoc($query);
$list_names = implode(', ', $reguser_names);
echo $reguser_names;
}
目前数据库中有2个用户处于活动状态,但这只显示一个名称,如何才能显示它们?
答案 0 :(得分:8)
您需要迭代mysql_query
的结果,例如
while ($row = mysql_fetch_assoc($result))
{
echo $row['user_name'];
}
因为我看到你想通过用逗号分隔结果来连接结果,你可以直接在MySQL
使用GROUP_CONCAT()
购买
SELECT GROUP_CONCAT(user_name) as UserName FROM users WHERE active = 1
<{1>}中的,
PHP
GROUP_CONCAT()的默认限制为$query = mysql_query("SELECT GROUP_CONCAT(user_name) as UserName FROM users WHERE active = 1");
$reguser_names = mysql_fetch_assoc($query);
$list_names = $reguser_names['UserName'];
。
如果要更改语法的变量值:
1024
答案 1 :(得分:1)
如果您要坚持使用ext/mysql
,则需要使用while
循环。 PDOStatement
有一个非常好的fetchAll
方法,基本上可以替代你拥有的方法。
$pdo = new PDO('mysql:host=?', 'user', 'pass');
//If `active` is 1 or 0 only, you don't need the `= 1`
echo implode(', ', $pdo->query("SELECT user_name FROM users WHERE active = 1")
->fetchAll());
答案 2 :(得分:0)
从db中获取时可以使用while
循环。
您不应在新代码中使用mysql_*
个功能(why?),它们是deprecated。请改用PDO or MySQLi
答案 3 :(得分:0)
mysql_ *已弃用
while ($row = mysql_fetch_assoc($result)) {
echo $row['user_name'];
}