回显mysql_query的所有结果[重复]

Posted

技术标签:

【中文标题】回显mysql_query的所有结果[重复]【英文标题】:Echo all results from mysql_query [duplicate] 【发布时间】:2013-03-21 11:06:03 【问题描述】:

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

这里是函数

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

【问题讨论】:

【参考方案1】:

从数据库中获取数据时,您可以使用while 循环。

您不应该在新代码中使用 mysql_* 函数 (why?),它们是 deprecated。请改用PDO or MySQLi

【讨论】:

【参考方案2】:

你需要迭代mysql_query的结果,例如。

while ($row = mysql_fetch_assoc($result)) 

    echo $row['user_name'];


因为我看到你想通过用逗号分隔结果来连接结果,你可以直接在MySQLbuy 中使用GROUP_CONCAT() 进行操作

SELECT GROUP_CONCAT(user_name) as UserName FROM users WHERE active = 1

php

$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'];

GROUP_CONCAT() 的默认限制是1024

如果你想改变变量的值,语法是:

SET [GLOBAL | SESSION] group_concat_max_len = val;
// where val is an unsigned integer

more on this link..

【讨论】:

注意GROUP_CONCAT 的默认长度限制相对较低 @J W 好吧,我希望它们显示在无序列表中。那么我会使用return '<ul><li>' . implode('<li></li>', $row) . '</li></ul>';之类的东西吗【参考方案3】:

mysql_* 已弃用

 while ($row = mysql_fetch_assoc($result)) 
          echo $row['user_name'];
    

【讨论】:

【参考方案4】:

如果您要坚持使用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());

【讨论】:

我有一个 connect.php 已经将我连接到数据库。我还能用它代替new PDO(creds)吗? @zachstarnes 不,你不能,因为PDO 不会创建“全局”连接(坦率地说,这不是很好的做法)。但是,您可以将 PDO 包装为包含凭据的另一个类,然后创建该类 class DB public function __construct() return new PDO(credentials); $pdo = new DB; 好的。我有多个使用mysql_query 的函数,所以每次我做一个查询我都必须做你上面做的事情? (只是对pdo->query 进行更改)所以如果我更改用于访问数据库的用户名或密码,我必须全部更改? @zachstarnes 现在可以使用,但是在查询需要输入的情况下,您应该使用正确的参数化查询

以上是关于回显mysql_query的所有结果[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在php中回显/返回一个数组

如何回显单行字段[重复]

在while循环中动态回显字符串[重复]

如何回显表的正确行数[重复]

编辑时如何回显单选按钮的值[关闭]

如何使用 PHP 回显 mysql SELECT COUNT(*) [重复]