我不知道为什么它在Php中会这样。在我的第一个while()循环中,它显示数据,但在第二个和第三个while)循环中它不返回/显示任何数据。我只使用一个sql查询来获取相同的数据三次。
你知道为什么它在php中的循环中没有在第二和第三个循环中显示数据吗?
$query = mysql_query("SELECT * FROM contact_details ORDER BY family_name LIMIT 10");
while($a=mysql_fetch_array($query)){
echo $fname = $a['family_name'];
echo "<br/>";
}
while($b=mysql_fetch_array($query)){
echo $fname = $b['family_name'];
echo "<br/>";
}
while($c=mysql_fetch_array($query)){
echo $fname = $c['family_name'];
echo "<br/>";
}
如果需要多次使用相同的结果,请先将其存储在本地数组中。一旦你的第一个循环完成,显然"没有更多的数据了",否则while
就不会停止。
例如:
$query = mysql_query("SELECT * FROM contact_details ORDER BY family_name LIMIT 10");
$data = [];
while($row = mysql_fetch_array($query))
$data[] = $row;
foreach($data as $row)
// Do Stuff;
foreach($data as $row)
// Do Stuff;
foreach($data as $row)
// Do Stuff;
强制性免责声明:mysql_
函数家族已被弃用,并将在未来的PHP版本中开始破坏。考虑切换到PDO或mysqli。
从PHP文档中,mysql_fetch_array返回"返回与提取的行相对应的字符串数组,如果没有更多的行,则返回FALSE",因此第二个和第三个循环重用FLASE(没有更多数据)
由于数组指针已到达末尾,因此无法再次读取。
你可以使用
- mysql_data_seek(resource$result,int$row_number)
- mysql_data_seek($query,0)
我建议在每次while循环之后,尝试使用这个重置指向该查询的指针
mysql_data_seek($query, 0); // add this after every while loop.
//you need this to reset the pointer of the query.
试试这个,如果你还有问题的话再检查一下。这个链接也有同样的问题,并且已经得到了PHP的回答-Multiple while($row=mysql_fetch_array($variable)){}ERRORS