【问题标题】:how to use one query for two loops如何将一个查询用于两个循环
【发布时间】:2023-03-21 06:20:01
【问题描述】:

在这种情况下如何编写查询: 这是查询

$gdQuery = $conn->query("blah blah ");

我想将上述查询用于两次循环。

  1. 是检索技能名(名称)
  2. 是要检索学生姓名(student_fname)

如果不是,这是一个正确的方法我该怎么做..?

<table>
<thead>
    <th>Paricipant</th> 
    <?php while($gdData = $gdQuery->fetch_assoc()) {  ?> 
    <th class="text-center"><?php echo $gdData['name']; ?></th> <?php } ?> 
    <th>Score</th> 
</thead>
<tbody>
    <tr>
        <?php while($gdData = $gdQuery->fetch_assoc()) {    ?>
        <td><?php echo  $gdData['student_fname']; ?></td> <?php }   ?> 
        <td style="line-height:45px">Score</td> 
    </tbody> 
</table>

我的问题是当我写这个时,第二个 while 循环不起作用

【问题讨论】:

  • 视情况而定。
  • SELECT name,student_fname... 只需一个查询
  • @Mihai YES 但查询中有 4 个表连接

标签: php mysql sql for-loop while-loop


【解决方案1】:

fetch_assoc 从查询结果中检索一行。您可以使用它,直到您用完该结果集中的行。通过多次调用它,您正在走向结果集的末尾。这就是为什么第二个 while 循环无事可做的原因。热电阻http://php.net/manual/en/mysqli-result.fetch-assoc.php

在开始迭代之前使用 fetch_all 获取所有行并将它们存储在变量中。使用该变量进行迭代。

或者,您可以尝试使用 data_seek 将结果集中的指针重置为在第一个 while 循环之后开始。 http://php.net/manual/en/mysqli-result.data-seek.php

【讨论】:

    【解决方案2】:

    我建议将数据检索与输出分开。

    第一部分应该从表中检索所有数据(namestudent_fname)并将其存储在两个数组中。

    第二部分读取数组并生成 html 表。

    这样您只需运行一次代价高昂的查询。

    【讨论】:

      【解决方案3】:

      使用PDOStatement::fetchAll() 方法获取所有列和行。

      然后,使用PDOStatement::fetchAll()方法的PDO::FETCH_ASSOC$fetch_style参数获取关联数组。

      $gdQuery = $conn->query('blah blah ');
      $gdDatas = $gdQuery->fetchAll(PDO::FETCH_ASSOC);
      

      然后,您将使用您的数据完成一个查询。然后,您可以关联地访问您的数据。

      【讨论】:

      • 你看到我使用了 PDOStatement 方法吗?
      • 你用的是mysqli还是PDO?
      • 您没有在 OP 中使用任何东西...在我们尝试帮助您之前完成您的问题。
      • OP..是什么意思?
      【解决方案4】:

      如果您想在页面的两个位置使用相同的循环,但又想获取不同的列名,那么这不是问题。

      $gdQuery = $conn->query('blah blah ');
      $gdDatas = $gdQuery->fetchAll(PDO::FETCH_ASSOC);
      

      在页面顶部编写此查询,并在不同的地方使用 $gdDatas。 或者,如果您想在多个地方使用查询,请更改变量名并使用它。

      【讨论】:

      • 致命错误:在第 68 行调用 /home2/amerytec/public_html/lc-latest/gdresults.php 中未定义的方法 mysqli_result::fetchAll()
      • 你不必在 while 循环 $gdData = $gdQuery->fetch_assoc() 中使用它,而只需在 while 循环中使用变量 $gdData
      猜你喜欢
      • 2013-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      相关资源
      最近更新 更多