使用相同查询的多个 PHP WHILE 循环

Posted

技术标签:

【中文标题】使用相同查询的多个 PHP WHILE 循环【英文标题】:Multiple PHP WHILE loops using the same query 【发布时间】:2010-11-23 21:48:18 【问题描述】:
$query1 = "SELECT * FROM idevaff_affiliates";
$affiliateID = mysql_query($query1) or die(mysql_error());

这是我上面的查询 - 我想将它用于两个 WHILE 循环

第一个在header部分——设置jquery

while($row = mysql_fetch_assoc($affiliateID))

第二个用于body中的while循环

while($row = mysql_fetch_assoc($affiliateID))

为什么我不能让它工作? - 我确实让它工作了,但必须使用两个不同的变量使用相同的 SELECT 信息进行两个查询。

【问题讨论】:

【参考方案1】:

你可以搜索第一行...使用 mysql_data_seek($affiliateID, 0),现在你可以再次执行 mysql_fetch_assoc()...无论如何,我更喜欢将结果加载到数组中。

【讨论】:

【参考方案2】:

这不起作用,因为一旦您运行一次结果集,结果内部指针就在末尾。要再次使用它,您需要在第二个循环之前使用 mysql_data_seek 将内部指针重置为结果集的开头。

【讨论】:

【参考方案3】:

调用mysql_fetch_assoc() 检索下一行(即,您尚未检索的下一行)。检索到所有行后,它会返回 false。因此,一旦您完成了第一个循环,您已经检索了所有行,而您每次得到的都是false

如果你需要重复使用相同的数据两次,把它全部放在一个数组中怎么样?

$rows = array();
while($row = mysql_fetch_assoc($affiliateID)) 
    $rows[] = $row;

现在您可以无限次地遍历$rows

foreach($rows as $row)  ... 

【讨论】:

@Wizzard 建议mysql_data_seek 倒带结果集是一个更好的选择。除此之外,它不会像这个答案那样通过将每一行存储在内存中来占用结果集上的大量 RAM。

以上是关于使用相同查询的多个 PHP WHILE 循环的主要内容,如果未能解决你的问题,请参考以下文章

在单个表中使用while循环进行多个选择查询?可能吗?

如何在单页中使用 php 从 while 循环中生成多个读取更多按钮?

创建多个循环(类别列)的查询

在php中的多个while循环中列重复(ID总数)时间

PDO - 对多个 foreach 循环使用相同的查询

从多个表中提取时 PHP while 循环和 if 语句问题