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

使用同一查询的多个PHP WHILE循环,php,mysql,loops,Php,Mysql,Loops,这是我上面的查询-我想使用它进行两个WHILE循环 第一个在标题部分-设置jquery $query1 = "SELECT * FROM idevaff_affiliates"; $affiliateID = mysql_query($query1) or die(mysql_error()); 第二个用于主体中的while循环 while($row = mysql_fetch_assoc($affiliateID)){ } 为什么我不能让它工作我确实让它工作了,但不得不使用两个不同的变量使

这是我上面的查询-我想使用它进行两个WHILE循环

第一个在标题部分-设置jquery

$query1 = "SELECT * FROM idevaff_affiliates";
$affiliateID = mysql_query($query1) or die(mysql_error());
第二个用于主体中的while循环

while($row = mysql_fetch_assoc($affiliateID)){
}

为什么我不能让它工作我确实让它工作了,但不得不使用两个不同的变量使用相同的选择信息进行两次查询。

调用
mysql\u fetch\u assoc()
检索下一行(即,下一行您尚未检索)。检索完所有行后,它将返回
false
。所以,一旦你完成了第一个循环,你就检索到了所有的行,每次你都会得到
false

如果需要重复使用同一数据两次,那么将其全部放在一个数组中如何

while($row = mysql_fetch_assoc($affiliateID)){
}
现在,您可以在
$rows
中迭代任意次数:

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

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

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

@Wizzard建议使用
mysql\u data\u seek
回放结果集是一个更好的选择。除此之外,通过将每一行存储在内存中,它不会像这样在结果集上使用大量RAM。
foreach($rows as $row) { ... }