mysql_fetch_array跳过第一行

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>";

9
你调用了mysql_fetch_array两次,这就是问题的原因。删掉第一次调用即可。 - vee
@vinodadhikary所说的,你的问题在第3行。如果第6行中的注释代码需要它,则将您的循环更改为do { } while ($row = mysql_fetch_array($results)) - Sammitch
和John Conde以及Chad一样,你也应该使用mysql_fetch_assoc(),因为mysql_fetch_array()会使PHP操作的数据量几乎翻倍。 - MonkeyZeus
6个回答

16

你正在调用 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 的建议非常棒。但这可能会让提问者感到困惑!对 do...while 的工作原理以及为什么提问者的代码没有产生预期结果进行一些解释,将使其更加出色! - vee
我对do...while循环非常熟悉 - 只是需要一些指导,因为我已经有点筋疲力尽了,这些小细节会被忽略!谢谢! - Craig Ralston

6
$query = "SELECT * FROM members";
$results = mysql_query($query);
$row = mysql_fetch_array($results); <-- There's your first row. Remove this.

1
这是因为第一次调用将数组指针设置为第一个元素,然后第二次调用 - 在 while 循环中 - 将指针设置为第二个元素。 - SaidbakR

2

代码中多了一个mysql_fetch_array。并且,开启表格标签(<table>)丢失了。

更正后的代码:

$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>";

0

当你初始化 $row 时调用 mysql_fetch_array,它会读取第一行。然后在开始 while 循环时再次调用它,这将把它移动到第二行,然后才运行循环。因此,它永远不会对第一行执行任何操作。


0
为了解决这个问题,只需注释掉第三行$row = mysql_fetch_array($results);。此查询将在此之后获取每一行数据。

0
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>";

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接