【问题标题】:PHP While loop inside another and first while doesn't return other valuesPHP While循环在另一个和第一个while内不返回其他值
【发布时间】:2017-11-22 14:27:29
【问题描述】:

我对在另一个循环中使用 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 返回: click here

$aukciono_istorija_while 返回:click here

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

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

【问题讨论】:

  • 停止使用已弃用的mysql_* API。使用mysqli_*PDO
  • 是的,我知道。我使用mysql_* 因为使用mysql_* 的连接文件和所有脚本都很旧(PHP 5.6 版本),所以我不能使用它:(
  • 为每个循环存储在数组中
  • PHP 5.6 不旧。紧接着,7.0 发布了
  • 是的,您应该更改每个使用已弃用的 mysql_* 函数的文件。一旦您的提供商切换到 PHP7,您的脚本将不再运行。

标签: php html mysql sql while-loop


【解决方案1】:

我找到了解决方案。我应该在 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 } ?> 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-11
    • 2017-04-03
    • 2017-11-09
    • 2016-01-11
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2015-01-04
    相关资源
    最近更新 更多