好吧,我的语法可能不需要代码就能被描述。基本上,它应该是easy...but永远不是。
我在一个row...basically中有两个循环,同样的事情。我从我的数据库中选择*每个变量,然后我需要在两个sep的基础上构建一个两层的javascript。变量。
所以
我有:
while ($row = mysql_fetch_array($myVariable)) {
// do events
}然后在那之后
while ($row2 = mysql_fetch_array($myVariable)) {
// do events
}由于某些原因,它在第二个one...is上完全没有返回任何东西,在那里我需要重置我的数组,它是否可能结束,然后我不能只是重新启动。这样一个基本的问题,但我不知道我的生活中还会有什么问题。所以这就是问题所在,是不是一个普遍的问题,就是连续做两次,并期望PHP在$myVariable的开头重新开始,它保存了我的SELECT语句?
Thanks...will全天检查,并根据需要更新。First timer to Stack Overflow我很想看到帮助。
发布于 2012-02-08 00:09:12
问题是查询返回一个resource。这个资源有它自己的内部指针(计数器用来记住要返回的行)。mysql_fetch_array将使内部指针前进,并一次返回资源中每一行。一旦它在末尾(没有更多的行了),它就会返回false。因此,在最后一个循环中,$row等于false,这将退出while循环。指针不会被重置。所以在下一个while循环中,你调用mysql_fetch_array,指针在最后,所以它返回false,完全绕过第二个while循环。您应该做的是遍历数据一次,并将每一行存储到一个数组中。然后,您可以复制/循环数组,只要您想要,一切都会按预期进行。
$data = array();
while ($row = mysql_fetch_array($myVariable)) {
$data[] = $row;
}
//now $data has all the rows. a simple foreach will loop over the data.
foreach($data as $row){
//do events
print_r($row);
}
//and you can loop over data again and again.
foreach($data as $row){
//do events
print_r($row);
}发布于 2012-02-07 23:47:14
发布于 2012-02-07 23:58:29
如果你的循环是嵌套的,并且假设两个循环的$myVariable是相同的,只需复制它,然后每次循环不同的副本。
$myVariable = mysql_result($query);
$myVariable2 = $myVariable;
while ($row = mysql_fetch_array($myVariable)) {
while ($row = mysql_fetch_array($myVariable2)) {
...另一个+1表示"make it a array“,但使用起来要好得多。
https://stackoverflow.com/questions/9179194
复制相似问题