看起来这应该是非常直接的,所以我觉得我错过了一些简单的东西。我运行两个单独的查询,并将它们分配给一个关联数组变量。查询运行正常,数据就在那里。我试图使用while循环遍历其他数据集中的一个数据集。它第一次运行正常,但我无法重置嵌套数据集,所以我可以再次遍历它。在下面看到的代码和结果中,您可以看到数据确实存在,因为它被条件IF语句跳过。另外,如果我将嵌套查询从升序更改为降序,我会获得第二组数据而不是第一组数据(在创建和测试时,我在第一个查询中只有两个数据点)。
似乎reset()函数应该执行我正在寻找的东西,但它没有完成任何事情。我希望我错过了一些非常简单的事情。
我甚至尝试将$ rowDate数组设置为空数组,并在While循环之前和之后设置NULL以强制它重新获取数据,但这也没有做任何事情。
代码段:
$studSet = mysqli_query($connection, $queryStud);
confirmQuery($studSet);
$dateSet = mysqli_query($connection, $queryDate);
confirmQuery($dateSet);
while ($rowStud = mysqli_fetch_assoc($studSet)) {
$studID = $rowStud['ID'];
$sFName = $rowStud['FName'];
$sLName = $rowStud['LName'];
$output .= "<p>" . $sFName . " " . $sLName;
while ($rowDate = mysqli_fetch_assoc($dateSet)) {
$output .= "<br />" . current($rowDate) . " "; //here strictly for debugging
if ($studID == $rowDate['studentID']) {
$output .= $rowDate['timeStamp'];
}
}
reset($rowDate);
$output .= "</p>";
$output .= "current " . current($rowDate) . " element"; //here strictly for debugging
}
return $output;
结果:
提前感谢您的帮助。
答案 0 :(得分:0)
是的,你在这里缺少两个关键点:
1)你试图在记录上使用reset(),这没有意义,如果你试图重置()$ dateSet这是查询结果,我会更好理解。
2)$ dateSet不是常规数组,而是MySQLi资源,这意味着您不能在其上使用常规PHP数组函数。你使用mysqli_fetch_assoc()来提取一行,你使用mysqli_data_seek()获得与reset()相同的效果,所以你的代码是:
mysqli_data_seek($dateSet, 0);
(取代了reset()调用)