0

在 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 之前重复原始查询,它会起作用。但这看起来很混乱,当然没有必要在同一个页面上写两次相同的查询。

任何意见,将不胜感激。谢谢。

4

3 回答 3

1

循环数据一次后,你需要做

mysql_data_seek($offer, 0);

更多信息: http: //php.net/manual/en/function.mysql-data-seek.php

注意:此扩展自 PHP 5.5.0 起已弃用

于 2013-05-31T17:57:10.427 回答
1

将行分配给数组,然后重用数组

$Offers = array();
while($row_offer = mysql_fetch_assoc($offer)) {
     $Offers[] = $row_offer;
}

然后在 $Offers 上进一步向下循环代码

于 2013-05-31T17:57:01.723 回答
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)

安东尼。

于 2013-05-31T17:58:39.717 回答