【问题标题】:Iterate through mysql result with a for loop使用 for 循环遍历 mysql 结果
【发布时间】:2012-02-05 08:45:45
【问题描述】:

通常,当您遍历 mysql 结果时,您会执行以下操作:

    while ($row = mysql_fetch_assoc($result)) {
        echo $row["some argument"];
    }

你如何使用 for 循环来做到这一点?这会很有帮助,因此我可以遍历结果的某个部分。我正在寻找类似的东西:

 for($i = 5; $i < 10; $i++){
    echo $row[$i]["some argument"];
 }

谢谢!


编辑 1

澄清一下,我需要遍历结果的部分,例如,这可能意味着第 5 到 10 行。

我的结果也是表中行的一部分,而不是整个表,所以我认为更改 my_sql 查询不应该是答案的一部分。

【问题讨论】:

  • 我将 c-syntax for 循环更改为 PHP 语法...
  • 我不同意您的编辑。恕我直言,使用 LIMIT 仍然是获取行子集(即 5 到 10)的最正确方法。
  • 请说明为什么更改 sql 查询不是答案的一部分?

标签: php mysql for-loop


【解决方案1】:

我相信你可以像这样使用mysql_result()

// Do your query here
$result = mysql_query("SELECT * FROM your_table");

for($i = 5; $i < 10; $i++){
   echo mysql_result($result, $i, "some argument");
}

编辑注意到我的 PHP 语法有点不对,现在更正了。

【讨论】:

    【解决方案2】:

    您可以将整个结果集加载到一个数组中,并按您的要求访问它:

    $all_results = array();
    while ($row = mysql_fetch_assoc($result)) {
        // Append all rows to an array
        $all_results[] = $row;
    }
    

    现在您可以通过以下方式访问它:

    echo $all_results[3]['somecolumn'];
    

    或者在for循环中:

    for($i = 0; $i < 10; $i++){
      echo $all_results[$i]["somecolumn"];
    }
    

    【讨论】:

      【解决方案3】:

      如果您希望遍历行子范围的任何特定字段,那么您可以考虑

       mysql_result($result,$row_num,$field)
      

      例行公事

      它返回结果中第row_num'行的字段属性值

      说如果你想获得结果行子范围的“一些参数”字段的值,你可以考虑遵循 sn-p

      $result = mysql_query("some query");
      $num_rows = mysql_num_rows($result);
      for($i=5;$i<$num_rows;$i++) {   // here I have used range 5 to max of result rows
          echo mysql_result($result,$i,"some argument"); 
      }
      

      【讨论】:

        【解决方案4】:

        有很多方法可以做到这一点,但如果您只想遍历所有返回的行,使用 while 是最简单的解决方案。这是另一个:

        $count = mysql_num_rows($result);
        
         for(int i = 0; i < $count; i++){
        $row = mysql_fetch_assoc($result);
            echo $row["some argument"];
         }
        

        【讨论】:

          【解决方案5】:

          如果你只需要一个向前运行的游标,你会

          for(int i = 0; i < 10; i++){
              $row = mysql_fetch_assoc($result
              if (!$row) break;
              echo $row["some argument"];
          }
          

          如果你需要一个可搜索的光标,你需要把结果拉到一个数组中;

          $rows=array();
          while ($row = mysql_fetch_assoc($result)) {
              $rows[]=$row;
          }
          
          //.. later, maybe repeatedly
          
          for(int i = 0; i < 10; i++){
              echo $rows[i]["some argument"];
          }
          

          【讨论】:

            【解决方案6】:

            像这样:

             for(int i = 0; i < 10; i++){
                $row = mysql_fetch_assoc($result)
                echo $row["some argument"];
             }
            

            【讨论】:

              猜你喜欢
              • 2015-10-05
              • 2010-12-17
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-01-03
              • 1970-01-01
              • 2013-09-14
              相关资源
              最近更新 更多