使用PHP列出mysql记录

时间:2012-11-25 04:13:03

标签: php mysql do-while

我正在尝试从同一页面中的数据库创建两个记录列表,如下所示:

<?php do {   ?>
<tr>
<td><?php echo $row['name']; ?></td>
<td><?php echo $row['email']; ?></td>
</tr>
<?php } while ($row = mysql_fetch_assoc($result)); ?>

<?php do {   ?>
<div>
<h1><?php echo $row['name']; ?></h1>
<p><?php echo $row['email']; ?></p>
</div>
<?php } while ($row = mysql_fetch_assoc($result)); ?>

虽然第一个循环工作正常,但第二次(创建div)do-while循环不会返回任何数据。我该怎么办呢?

3 个答案:

答案 0 :(得分:2)

在两个循环之间插入mysql_data_seek($result, 0);以重置结果,以便您可以再次阅读。

警告,如果查询未返回任何行,mysql_data_seek会给您一个警告。在使用之前检查是否有返回的行。

另外要注意,你的循环是向后的。您需要获取,然后显示。 :P否则,每个循环的第一次迭代将吐出一个空行。使用while (...) { }而不是do { } while (...)

同时被警告, mysql_query是废话。请停止使用它。请。我们所有的一切。 mysqli扩展做同样的事情,可以工作几乎相同,and -- unlike mysql -- is actively maintained。另外,当你最终学习使用预备语句时(和你应该学会使用预备语句),mysqli有它们。)

答案 1 :(得分:0)

尝试为$result使用不同的变量命名,例如$result1$result2

答案 2 :(得分:0)

mysql_fetch_assoc返回一个与获取的行对应的关联数组,并将内部数据指针向前移动,即在获取行时删除该行。第二次迭代将找不到行。

这应该可行,也许不是最好的方式(我永远使用了db类)。

$result2 = $result;

在迭代2中使用mysql_fetch_assoc($result2);