【问题标题】:How to iterate by row through a mysql query in php如何通过php中的mysql查询逐行迭代
【发布时间】: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 列之外的任何列执行此操作时,都会说一个名为“名称”的文本类型的列,它只返回一个字母。

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

【问题讨论】:

    标签: php sql mysql loops iteration


    【解决方案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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-12-18
        • 1970-01-01
        • 2016-10-11
        • 1970-01-01
        • 1970-01-01
        • 2010-12-06
        • 2021-05-21
        相关资源
        最近更新 更多