回应mysql_query的所有结果

时间:2013-03-31 01:28:28

标签: php mysql sql select

我正在尝试创建一个函数来查询数据库并输出数组中的所有结果。出于某种原因,它只显示一个结果。

这是函数

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个用户处于活动状态,但这只显示一个名称,如何才能显示它们?

4 个答案:

答案 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

more on this link..

答案 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'];
    }