在PHP页面的顶部,我有一个mySQL查询,后面跟着一个do-while循环。
$query_offer = "SELECT offer, offer_text FROM ad_offers WHERE hid LIKE '$hid' AND show_from < CURRENT_DATE() AND show_to > CURRENT_DATE()";
$offer = mysql_query($query_offer, $MySQL_extranet) or die(mysql_error());
$row_offer = mysql_fetch_assoc($offer);
do {
SOME PHP STUFF
}while($row_offer = mysql_fetch_assoc($offer));
然后进一步向下的页面,我想重复相同的do-while循环与不同的PHP代码在它里面。但这行不通。在执行了第一次do-while之后,系统似乎忘记了查询的结果。如果我在第二个do-while之前重复原始查询,它就可以工作。但是,这看起来非常混乱,而且肯定没有必要在同一页面上编写两次相同的查询。
任何建议将不胜感激。谢谢。
将行分配给数组,然后重用该数组
$Offers = array();
while($row_offer = mysql_fetch_assoc($offer)) {
$Offers[] = $row_offer;
}
然后在$Offers
循环一次数据后,需要执行
mysql_data_seek($offer, 0);
更多信息:http://php.net/manual/en/function.mysql-data-seek.php
注意:此扩展在PHP 5.5.0
将结果赋值给数组并再次迭代,或者创建可以在需要时调用的函数
<?php
function getOffers($hid) {
$offers = array();
$query = mysql_query('SELECT ...');
while($offer = mysql_fetch_assoc($query)) {
array_push($offers, $offer);
}
return $offers;
}
$offers = getOffers($hid);
// use $offers here
// or here
// or recall getOffers($hid)
安东尼。