【问题标题】:mysql_fetch_array skipping first rowmysql_fetch_array 跳过第一行
【发布时间】:2013-08-17 23:54:10
【问题描述】:

我正在使用相同的过程来创建和填充表格 - 除了在每个表格中跳过第一行之外,一切正常。可以用另一双眼睛,因为我似乎无法确定问题所在。提前致谢。

   $query = "SELECT * FROM members";
   $results = mysql_query($query);
   $row = mysql_fetch_array($results);

   
   //echo my <table> start and headings;

    while ($row = mysql_fetch_array($results)) 
    {
    echo "<tr><td>".$row['Last Name']."</td>";
    echo "<td>".$row['First Name']."</td>";
    echo "<td>".$row['Middle Name']."</td>";
    echo "<td>".$row['Sfx']."</td>";
    echo "<td>".$row['Prf']."</td>";
    echo "<td>".$row['Spouse/SO']."</td>";
    echo "<td>".$row['Ancestor']."</td>";
    echo "<td>".$row['Status']."</td>";
    echo "<td>".$row['Address 1']."</td>";
    echo "<td>".$row['Address 2']."</td>";
    echo "<td>".$row['City']."</td>";
    echo "<td>".$row['ST']."</td>";
    echo "<td>".$row['Zip 5']."</td>";
    echo "<td>".$row['Zip 4']."</td>";
    echo "<td>".$row['Home Phone']."</td>";
    echo '<td><a href="mywebsite/mypage.php?id=' . $row['id'] . '">Bio</a></td></tr>';
    }

    echo "</table><hr>";

【问题讨论】:

  • 你打电话给mysql_fetch_array 两次,这就是原因。删除第一个调用。
  • @vinodadhikary 所说的,您的问题是第 3 行。如果第 6 行中的注释代码需要它,则将循环更改为 do { } while ($row = mysql_fetch_array($results))
  • 约翰·康德和乍得同上。您还应该使用 mysql_fetch_assoc() 代替,因为 mysql_fetch_array() 几乎使 PHP 处理的数据量翻了一番。

标签: php html mysql


【解决方案1】:
$query = "SELECT * FROM members";
$results = mysql_query($query);
$row = mysql_fetch_array($results); <-- There's your first row. Remove this.

【讨论】:

  • 这是因为第一次调用设置数组指针指向第一个元素,然后第二次调用-in while loop-设置指向第二个元素的指针。
【解决方案2】:

在初始化 $row 时调用 mysql_fetch_array,它读取第一行。然后在开始 while 循环时再次调用它,这会在运行任何循环之前将其移动到第二行。因此,它永远不会对第一行做任何事情。

【讨论】:

    【解决方案3】:

    您正在调用 mysql_fetch_array 两次......在循环之前一次,然后在循环时调用一次。

    如果你需要一个种子行来构建你的标题行,你最好在这里使用 do..while 循环。

    $query = "SELECT * FROM members";
    $results = mysql_query($query);
    $row = mysql_fetch_assoc($results);
    
    //echo my <table> start and headings;
    
    do  
    {
        echo "<tr><td>".$row['Last Name']."</td>";
        echo "<td>".$row['First Name']."</td>";
        echo "<td>".$row['Middle Name']."</td>";
        echo "<td>".$row['Sfx']."</td>";
        echo "<td>".$row['Prf']."</td>";
        echo "<td>".$row['Spouse/SO']."</td>";
        echo "<td>".$row['Ancestor']."</td>";
        echo "<td>".$row['Status']."</td>";
        echo "<td>".$row['Address 1']."</td>";
        echo "<td>".$row['Address 2']."</td>";
        echo "<td>".$row['City']."</td>";
        echo "<td>".$row['ST']."</td>";
        echo "<td>".$row['Zip 5']."</td>";
        echo "<td>".$row['Zip 4']."</td>";
        echo "<td>".$row['Home Phone']."</td>";
        echo '<td><a href="mywebsite/mypage.php?id=' . $row['id'] . '">Bio</a></td></tr>';
    } while ($row = mysql_fetch_assoc($results));
    
    echo "</table><hr>";
    

    【讨论】:

    • 不错的一个! do...while 的好建议。但这可能只会让 OP 感到困惑!关于do...while 的工作原理以及为什么 OP 的代码没有产生预期结果的一些解释会让它更棒!
    • 我很熟悉做...while - 只是需要一些指导,因为我已经有点筋疲力尽了,这些小东西从我身边溜走了!谢谢!
    【解决方案4】:

    代码中有额外的mysql_fetch_array。此外,缺少打开表标记(&lt;table&gt;)。

    更正的代码:

    $query = "SELECT * FROM members";
    $results = mysql_query($query);
    echo "<table>";
    
    while ($row = mysql_fetch_array($results)) 
    {
    echo "<tr><td>".$row['Last Name']."</td>";
    echo "<td>".$row['First Name']."</td>";
    echo "<td>".$row['Middle Name']."</td>";
    echo "<td>".$row['Sfx']."</td>";
    echo "<td>".$row['Prf']."</td>";
    echo "<td>".$row['Spouse/SO']."</td>";
    echo "<td>".$row['Ancestor']."</td>";
    echo "<td>".$row['Status']."</td>";
    echo "<td>".$row['Address 1']."</td>";
    echo "<td>".$row['Address 2']."</td>";
    echo "<td>".$row['City']."</td>";
    echo "<td>".$row['ST']."</td>";
    echo "<td>".$row['Zip 5']."</td>";
    echo "<td>".$row['Zip 4']."</td>";
    echo "<td>".$row['Home Phone']."</td>";
    echo '<td><a href="mywebsite/mypage.php?id=' . $row['id'] . '">Bio</a></td></tr>';
    }
    
    echo "</table><hr>";
    

    【讨论】:

      【解决方案5】:
      while ($row) 
      {
      echo "<tr><td>".$row['Last Name']."</td>";
      echo "<td>".$row['First Name']."</td>";
      echo "<td>".$row['Middle Name']."</td>";
      echo "<td>".$row['Sfx']."</td>";
      echo "<td>".$row['Prf']."</td>";
      echo "<td>".$row['Spouse/SO']."</td>";
      echo "<td>".$row['Ancestor']."</td>";
      echo "<td>".$row['Status']."</td>";
      echo "<td>".$row['Address 1']."</td>";
      echo "<td>".$row['Address 2']."</td>";
      echo "<td>".$row['City']."</td>";
      echo "<td>".$row['ST']."</td>";
      echo "<td>".$row['Zip 5']."</td>";
      echo "<td>".$row['Zip 4']."</td>";
      echo "<td>".$row['Home Phone']."</td>";
      echo '<td><a href="mywebsite/mypage.php?id=' . $row['id'] . '">Bio</a></td></tr>';
        $row = mysql_fetch_array($results);
      
      }
      
      echo "</table><hr>";
      

      【讨论】:

        猜你喜欢
        • 2012-08-18
        • 2012-08-30
        • 2014-06-07
        • 2013-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-13
        • 1970-01-01
        相关资源
        最近更新 更多