繁体   English   中英

PHP While循环在另一个循环内,而第一个While循环不返回其他值

[英]PHP While loop inside another and first while doesn't return other values

我对在另一个内部使用while循环感到有些困惑。 第二个循环一切都很好,但是第一个循环只返回一个值,并且相同。

$aukciono_laimetojai_while = mysql_query("SELECT id, user_id, date, win
    FROM tb_auction_winners WHERE user_id = 206");
$aukciono_istorija_while = mysql_query("SELECT user_id, aukciono_id,
    COALESCE(SUM(bid), 0) AS bid, date FROM tb_aukciono_istorija
    WHERE user_id = 206 GROUP BY aukciono_id");

while ($r1 = mysql_fetch_assoc($aukciono_istorija_while)) {
    while ($r2 = mysql_fetch_assoc($aukciono_laimetojai_while)) { ?>
        <tr>
            <td><?php echo $r2['date']; ?></td>
            <td><?php echo $r2['win'] - $r1['bid']; ?> Eur</td>
            <td>0 Eur</td>
            <td>Plačiau <?php echo $r2['win'] . ' - ' . $r1['bid']; ?></td>
        </tr>
<?php } } ?>

$aukciono_laimetojai_while返回: 单击此处

$aukciono_istorija_while返回: 单击此处

使用这2个while循环,该表如下所示:(www.i.stack.imgur.com/Os8Rx.png)(不能使用超过2个链接,对不起)

第二个数字出了点问题(每行0.14不应相同,只有第一个数字不正确),它应该返回3行( $r1 = mysql_fetch_assoc($aukciono_istorija_while )在数据库中有3行)。 我不知道这里出了什么问题,使用while循环,一切都很好。 有人可以帮我吗?

我找到了解决方案。 我应该在while循环中只使用一个查询。 代替以下代码块:

$aukciono_laimetojai_while = mysql_query("SELECT id, user_id, date, win
    FROM tb_auction_winners WHERE user_id = 206");
$aukciono_istorija_while = mysql_query("SELECT user_id, aukciono_id,
    COALESCE(SUM(bid), 0) AS bid, date FROM tb_aukciono_istorija
    WHERE user_id = 206 GROUP BY aukciono_id");

while ($r1 = mysql_fetch_assoc($aukciono_istorija_while)) {
    while ($r2 = mysql_fetch_assoc($aukciono_laimetojai_while)) { ?>
        <tr>
            <td><?php echo $r2['date']; ?></td>
            <td><?php echo $r2['win'] - $r1['bid']; ?> Eur</td>
            <td>0 Eur</td>
            <td>Plačiau <?php echo $r2['win'] . ' - ' . $r1['bid']; ?></td>
        </tr>
<?php } } ?>

我应该使用这个(1个查询,1个while循环):

$aukciono_laimetojai_ir_aukciono_istorija_while = mysql_query("
SELECT tai.aukciono_id tai_aukciono_id, taw.win taw_win, taw.date taw_date,
    COALESCE(SUM(tai.bid), 0) tai_bid FROM tb_auction_winners taw
JOIN tb_aukciono_istorija tai ON taw.id = tai.aukciono_id
WHERE tai.user_id = $usid GROUP BY aukciono_id");

while ($r1 = mysql_fetch_assoc($aukciono_laimetojai_ir_aukciono_istorija_while)) { ?>
        <tr>
            <td><?php echo $r1['taw_date']; ?></td>
            <td><?php echo $r1['taw_win'] - $r1['tai_bid']; ?> Eur</td>
            <td>0 Eur</td>
            <td class="placiau" data-aukciono-id=
                "<?php echo $r1['tai_aukciono_id']; ?>">Plačiau</td>
        </tr>
<?php } ?> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM