在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之前重复原始查询,它就可以工作。但这似乎非常混乱,当然不必在同一页面上两次写同一个查询。
任何建议都将不胜感激。感谢。
答案 0 :(得分:1)
将行分配给数组,然后重用数组
$Offers = array();
while($row_offer = mysql_fetch_assoc($offer)) {
$Offers[] = $row_offer;
}
然后通过$ Offers
进一步降低代码循环答案 1 :(得分:1)
循环数据一次后,您需要执行
mysql_data_seek($offer, 0);
更多信息:http://php.net/manual/en/function.mysql-data-seek.php
注意:自PHP 5.5.0起,不推荐使用此扩展程序
答案 2 :(得分: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)
安东尼。