【问题标题】:doing a loop inside a loop using mysql ressources使用 mysql ressources 在循环内执行循环
【发布时间】:2013-11-20 09:40:58
【问题描述】:

我正在尝试使用 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;

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

我们将不胜感激。

【问题讨论】:

  • 您应该将 MySQLi 或 PDO 与准备好的语句一起使用。 mysql_ 函数已被弃用。

标签: php mysql sql loops while-loop


【解决方案1】:

您在 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 )) :

【讨论】:

  • 转义符在哪里,mysqli_* 在哪里?
  • 我不知道什么是 mysqli_* 并且转义在没有显示在那里的标题上
  • @StanislasPiotrowski: mysql_* 已从 PHP 5.3 中删除,您可以使用 mysqli 或 PDO 语句
【解决方案2】:

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

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

它会让你的代码更简洁,并且会避免像@Suresh 指出的那样的问题。

【讨论】:

    猜你喜欢
    • 2013-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-19
    相关资源
    最近更新 更多