1

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

<?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 循环不返回任何数据。我应该如何解决这个问题?

4

3 回答 3

2

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

被警告,如果查询没有返回任何行,mysql_data_seek会给你一个警告。使用前检查是否有返回行。

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

被警告,mysql_query是废话。请停止使用它。拜托。为了我们所有的利益 。mysqli 扩展做同样的事情,几乎可以相同地工作,并且 - 与 mysql 不同 - 被积极维护。另外,当你终于绕过学习使用准备好的语句(你应该学习使用准备好的语句),mysqli有它们。)

于 2012-11-25T04:16:53.997 回答
0

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

于 2012-11-25T04:15:48.650 回答
0

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

这应该可行,也许不是最好的方法(我一直使用 db 类)。

$result2 = $result;

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

于 2012-11-25T04:17:38.837 回答