【问题标题】:Mysql num rows in while loopMysql num 行在 while 循环中
【发布时间】:2011-09-04 00:54:19
【问题描述】:

我需要在 ID 之前显示一些有序的数字,从 1 到 15,所以基本上,我需要在每个新行上都有一个新数字,如下所示:

  1. ID NAME KILLS 等
  2. ID NAME KILLS 等
  3. ID NAME KILLS 等。 ...
  4. ID NAME KILLS 等

这是代码,由于某种原因,我使用“foreach”失败了,我得到了一个 15x15 的重复循环...

$sql = mysql_query('SELECT * FROM `sc_rank` ORDER BY `kills` DESC LIMIT 15',$connect) or die (mysql_error());
while ($get = mysql_fetch_array($sql))
{
    echo '<tr><td>'.$get["id"].'</td><td>'.$get["name"].'</td><td>'.$get["kills"].'</td><td>'.$get["deaths"].'</td><td>'.$get["hd"].'</td><td>'.$get["eff"].'%</td><td>'.$get["acc"].'%</td><td>'.$get["damage"].'</td><td>'.$get["shots"].'</td><td>'.$get["hits"].'</td></tr>';

【问题讨论】:

    标签: php mysql loops while-loop


    【解决方案1】:

    在你的循环之前初始化一个变量$i = 1;,回显它并在循环体的末尾增加$i++;

    $sql = mysql_query('SELECT * FROM `sc_rank` ORDER BY `kills` DESC LIMIT 15',$connect) or die (mysql_error());
    
    $i = 1;
    while ($get = mysql_fetch_array($sql))
    {
        echo '<tr><td>'.$i.'</td><td>'.$get["id"].'</td><td>'.$get["name"].'</td><td>'.$get["kills"].'</td><td>'.$get["deaths"].'</td><td>'.$get["hd"].'</td><td>'.$get["eff"].'%</td><td>'.$get["acc"].'%</td><td>'.$get["damage"].'</td><td>'.$get["shots"].'</td><td>'.$get["hits"].'</td></tr>';
    
        $i++;
    }
    

    【讨论】:

    • 我正要提出同样的建议...添加一个计数器变量。
    【解决方案2】:

    你只需要添加一个整数来增加。

    $sql = mysql_query('SELECT * FROM `sc_rank` ORDER BY `kills` DESC LIMIT 15',$connect) or die (mysql_error());
    $i = 0;
    while ($get = mysql_fetch_array($sql))
    {
        $i++;
        $strDisplay  = "<tr><td>$i.</td><td>$get['id']</td>";
        $strDisplay .= "<td>$get['kills']</td><td>$get['deaths']</td>";
        $strDisplay .= "<td>$get['hd']</td><td>$get['eff']%</td>";
        $strDisplay .= "<td>$get['acc']%</td><td>$get['damage']</td>";
        $strDisplay .= "<td>$get['shots']</td><td>$get['hits']</td></tr>";
    
        echo $strDisplay;
    }
    

    稍微改变了格式以使其更具可读性...

    或者您也可以在 HTML 中使用编号列表。

    $sql = mysql_query('SELECT * FROM `sc_rank` ORDER BY `kills` DESC LIMIT 15',$connect) or die (mysql_error());
    $i = 0;
    $strDisplay = "<ol>";
    while ($get = mysql_fetch_array($sql))
    {
        $i++;
        $strDisplay  .= "<li><tr><td>$get['id']</td>";
        $strDisplay .= "<td>$get['kills']</td><td>$get['deaths']</td>";
        $strDisplay .= "<td>$get['hd']</td><td>$get['eff']%</td>";
        $strDisplay .= "<td>$get['acc']%</td><td>$get['damage']</td>";
        $strDisplay .= "<td>$get['shots']</td><td>$get['hits']</td></tr></li>";
    }
    
    $strDisplay .= "</ol>";
    echo $strDisplay;
    

    编号列表方法可能不是表格中的最佳方法。

    【讨论】:

      【解决方案3】:

      另外,您可以尝试使用 mysql_result() php 函数使用 for 循环进行迭代,如下所示:

      $sql = mysql_query('SELECT * FROM `sc_rank` ORDER BY `kills` DESC LIMIT 15',$connect) or die (mysql_error());
      
      for ($i = 1; $i <= mysql_num_rows($sql); $i++) {
          $get = mysql_result($sql,$i);
          echo '<tr><td>'.$i.'</td><td>'.$get["id"].'</td><td>'.$get["name"].'</td><td>'.$get["kills"].'</td><td>'.$get["deaths"].'</td><td>'.$get["hd"].'</td><td>'.$get["eff"].'%</td><td>'.$get["acc"].'%</td><td>'.$get["damage"].'</td><td>'.$get["shots"].'</td><td>'.$get["hits"].'</td></tr>';
      }
      

      【讨论】:

        【解决方案4】:
                $sql = mysql_query('SELECT * FROM `sc_rank` ORDER BY `kills` DESC LIMIT 15', $connect) or die(mysql_error());
                $max = mysql_num_rows($sql);
                for($i > 0; $i <= $max; $i++) {
                    while($get = mysql_fetch_array($sql)) {
                        echo '<tr><td>'.$i.'</td><td>'.$get["id"].'</td><td>'.$get["name"].'</td><td>'.$get["kills"].'</td><td>'.$get["deaths"].'</td><td>'.$get["hd"].'</td><td>'.$get["eff"].'%</td><td>'.$get["acc"].'%</td><td>'.$get["damage"].'</td><td>'.$get["shots"].'</td><td>'.$get["hits"].'</td></tr>'; 
                    }
                } 
        

        这个应该也不错:)

        【讨论】:

        • 当然没有。您有 2 个嵌套循环。为什么需要 2 个循环?
        猜你喜欢
        • 2022-01-22
        • 1970-01-01
        • 2013-03-11
        • 2013-01-28
        • 2011-11-30
        • 2017-09-03
        • 1970-01-01
        • 2016-11-27
        • 1970-01-01
        相关资源
        最近更新 更多