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

时间:2013-05-31 17:54:10

标签: php mysql

在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之前重复原始查询,它就可以工作。但这似乎非常混乱,当然不必在同一页面上两次写同一个查询。

任何建议都将不胜感激。感谢。

3 个答案:

答案 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)

安东尼。