0

我正在浏览各种网站,了解如何跳过由mysql fetch assoc和 php生成的额外行do while,但找不到此解决方案。我正在从数据库生成 html 表。从下面的代码中,我得到了一个额外的空行。我的数据库表上有三个数据。在这里,此代码生成五行,而我期望四行。

我的完整代码如下:

<?php
$sql = "SELECT * from $table where Year='2013'";
$result = mysql_query($sql);

if(!$result) {
die(mysql_error()); // TODO: better error handling
}
?>
<table><tr>
<th>Name</Name>
<th>Date</th>
</tr>
<?php do { ?>
<tr>
<td><?php echo $row['Name'];?></td>
<td><?php  $ndt = strtotime($row['date']); echo date('d-M-Y', $ndt); ?></td>
 <?php } while ($row= mysql_fetch_assoc($result)); ?>
</tr>
</table>
4

3 回答 3

4

切换到 while 循环。

<?php while ($row= mysql_fetch_assoc($result)) { ?>
<tr>
<td><?php echo $row['Name'];?></td>
<td><?php  $ndt = strtotime($row['date']); echo date('d-M-Y', $ndt); ?></td>
<?php } ?>

第一次通过你的 do/while 循环 $row 没有填充,因此你得到一个空行。

于 2013-07-23T05:47:29.127 回答
1

为什么不简单地使用 while 循环?

<?php
$sql = "SELECT * from $table where Year='2013'";
$result = mysql_query($sql);

if(!$result) {
die(mysql_error()); // TODO: better error handling
}
?>
<table><tr>
<th>Name</Name>
<th>Date</th>
</tr>
<?php while ($row= mysql_fetch_assoc($result)) { ?>
<tr>
<td><?php echo $row['Name'];?></td>
<td><?php  $ndt = strtotime($row['date']); echo date('d-M-Y', $ndt); ?></td>
 <?php } ?>
</tr>
</table>
于 2013-07-23T05:48:01.007 回答
1

请在下面更改您的代码:

<table>
    <tr>
        <th>Name</th>
        <th>Date</th>
    </tr>
<?php while ($row= mysql_fetch_assoc($result)) { ?>
    <tr>
        <td><?php echo $row['Name'];?></td>
        <td><?php  $ndt = strtotime($row['date']); echo date('d-M-Y', $ndt); ?></td>
<?php } ; ?>
    </tr>
</table>
于 2013-07-23T05:48:35.403 回答