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 を実行した後、システムがクエリの結果を忘れたかのようです。2 番目の do-while の前に元のクエリを繰り返すと、機能します。しかし、それは非常に面倒に思えます。確かに、同じページに同じクエリを 2 回記述する必要はありません。

アドバイスをいただければ幸いです。ありがとう。

4

3 に答える 3

1

行を配列に割り当ててから、配列を再利用します

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

次に、$Offers のコード ループをさらに下に移動します

于 2013-05-31T17:57:01.723 に答える
1

データを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 に答える
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 に答える