我正在尝试从同一页面中的数据库创建两个记录列表,如下所示:
<?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循环不会返回任何数据。我该怎么办呢?
答案 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);