我需要写相同的mySQL查询两次


I Need to Write the Same mySQL Query Twice

在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)
安东尼。