如何通过php中的mysql查询逐行迭代

Posted

技术标签:

【中文标题】如何通过php中的mysql查询逐行迭代【英文标题】:How to iterate by row through a mysql query in php 【发布时间】:2011-01-18 03:22:48 【问题描述】:

好的,所以我正在尝试查询我的数据库并选择所有具有特定值的行。 之后,我使用 mysql_fetch_array() 将查询转换为数组,然后尝试使用 for each 循环逐行遍历获取的数组。

<?php
$query = mysql_query("SELECT * FROM users WHERE pointsAvailable > 0 ORDER BY pointsAvailable Desc");
$queryResultArray = mysql_fetch_array($query);
foreach($queryResultArray as $row)

    echo $row['pointsAvailable'];

?>

虽然当我对除 pointsAvailable 列之外的任何列执行此操作时,都会说一个名为“名称”的文本类型的列,它只返回一个字母。

如何逐行遍历返回的查询,并允许从当前行获取特定列的数据?

【问题讨论】:

【参考方案1】:
$result = mysql_query("SELECT id, name FROM mytable");

while ($row = mysql_fetch_array($result, MYSQL_NUM)) 
    printf("ID: %s  Name: %s", $row[0], $row[1]);  

或使用 MYSQL_ASSOC 将允许您使用命名列

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
    printf("ID: %s  Name: %s", $row["id"], $row["name"]);

【讨论】:

谢谢你工作得很好。那么每次在查询资源上调用mysql_fetch_array时它实际上只返回一行吗? 每次调用 mysql_fetch_array 时,它都会返回当前行并将数据指针向前移动到下一行。遍历完所有行后返回false,while循环结束。【参考方案2】:

是的,使用mysql_fetch_array($result) 是可行的方法。

【讨论】:

【参考方案3】:

随着 PHP 7+ 成为新标准并且 mysql_fetch_array 被弃用,您将需要开始使用 mysqli_fetch_array

面向对象的风格

$result = $mysqli->query($query);
/* numeric array */
while ($row = $result->fetch_array(MYSQLI_NUM)) 
    // Do stuff with $row

/* associative array */
while ($row = $result->fetch_array(MYSQLI_ASSOC))
    // Do stuff with $row

/* associative and numeric array */
while ($row = $result->fetch_array(MYSQLI_BOTH))
    // Do stuff with $row

程序风格

$result = mysqli_query($mysqli, $query);
/* numeric array */
while ($row = mysqli_fetch_array($result, MYSQLI_NUM)) 
    // Do stuff with $row

/* associative array */
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC))
    // Do stuff with $row

/* associative and numeric array */
while ($row = mysqli_fetch_array($result, MYSQLI_BOTH))
    // Do stuff with $row

您可以在 PHP 圣经中阅读有关此更改的更多信息。

https://www.php.net/manual/en/mysqli-result.fetch-array.php

【讨论】:

以上是关于如何通过php中的mysql查询逐行迭代的主要内容,如果未能解决你的问题,请参考以下文章

通过逐行从数据库中获取数据,使用 PHP/MySQL 生成 QR 码

php递归查询

使用 PHP 执行多个 MYSQL 查询

如何影响 PHP 中的 MySQL 查询? [复制]

如何迭代优化 MySQL 查询?

将 MySQL 内爆数组中的项目与查询中的 PHP 数组匹配