0

我正在尝试使用 mysql 在循环中执行一些循环,但似乎没有解释

它只返回第一个结果,即使我的数据库中有很多记录,它也应该返回所有内容

下面是我显示结果的代码

while ($cr = mysql_fetch_assoc($result)):
    $i = 0;
    ++$i;
    ?>
    <div style="width:200px"  class="fif"><table style="width:100%">
        <tr class="fbgreybox">
        <td colspan="3" style="text-align: center;font-weight: bold">
            <img src="images/calendar_2.png"> Séance du : <?php echo date('d-m-Y', strtotime($cr['record'])); ?>
        </td>
        </tr>
        <?php
        $sql = "SELECT `exercise` FROM `workouts` WHERE `record` = '{$cr['record']}' AND `user`= {$_SESSION['userid']} GROUP BY `exercise`";
        $result = mysql_query($sql);
        while ($exo = mysql_fetch_assoc($result)) :
        ?>
            <tr class="fbinfobox">
            <td colspan="3" style="text-align: left">
                <img src="images/Sport-dumbbell.png"> ////<?php echo exerciseName($exo['exercise']); ?>
            </td>
            </tr>
            <tr>
            <td style="text-align: center;font-weight: bold">Séries</td>
            <td style="text-align: center;font-weight: bold">Reps</td>
            <td style="text-align: center;font-weight: bold">Poids</td>
            </tr>
        <?php
        $rqt = "SELECT `set_number`, `reps`, `weight` FROM `workouts` WHERE `exercise` = {$exo['exercise']} AND `record` = '{$cr['record']}' AND `user` = {$_SESSION['userid']} ORDER BY `set_number`";
        $result2 = mysql_query($rqt);
        while ($detail = mysql_fetch_assoc($result2)):
            ?>
            <tr>
            <td>
                Série ////<?php echo $detail['set_number']; ?>
            </td>
            <td>
                <?php echo $detail['reps']; ?>
            </td>
            <td>
                <?php echo $detail['weight']; ?>
            </td>
            </tr>
            <?php
        endwhile;
        endwhile;
        ?>
    </table>
    </div>
    <?php
endwhile;

代码中没有错误,所以我真的不明白为什么它没有被解释。

任何帮助将不胜感激。

4

2 回答 2

2

您在两个 mysql_fetch_assoc() 函数中都使用了 $result 。避免这种情况。

在内部循环中,您可以使用另一个变量:

$sql = "SELECT `exercise` FROM `workouts` WHERE `record` = '{$cr['record']}' AND `user`= {$_SESSION['userid']} GROUP BY `exercise`";
$workoutsResult = mysql_query($sql);
while ($exo = mysql_fetch_assoc($workoutsResult )) :
于 2013-11-08T11:32:15.707 回答
1

如果我是你,我会首先遍历第一个查询并将其放入一个数组中。然后你遍历这个数组,搜索内部查询,并将数组放入另一个数组中。

然后,您遍历它们以构建您的表。

@Suresh 指出,它会让你的代码更干净,并且会避免你遇到的问题。

于 2013-11-08T11:40:59.337 回答