如何在while循环中添加另一个mysqli查询?

时间:2019-04-04 22:33:24

标签: php while-loop

因此,我正在执行查询并以表的形式返回结果。下面的代码运行良好。

        <table>
      <thead>
        <tr style="text-align: center;">
          <th>Activity</th>
          <th>Description</th>
          <th>Frequency</th>
          <th>Mandatory</th>
          <th>Added Yet</th>
        </tr>
      </thead>
      <tbody>
        <?php
          $stmt = $conn->prepare("SELECT * FROM knowledgebase ORDER BY category ASC");
          $stmt->execute();
          $result = $stmt->get_result();
          if($result->num_rows === 0) echo "<tr><td>No activities found</td><td></td><td></td><td></td><td></td><td></td></tr>           </tbody>
                  </table></br></br>
          Why not add your first activity from our <a href=\"#\">Knowledge base</a> or <a href=\"create_activities.php\">create a new activity</a> of your own";
          else {
          while($row = mysqli_fetch_array($result)) {
              $activity_id          =   $row['id'];
              $title                =   $row['title'];
              $description          =   $row['description'];
              $frequency            =   $row['frequency'];
              $mandatory            =   $row['mandatory'];

              echo "<tr><td><a href=\"add_activities.php?id=".$activity_id."\">".$title."</a></td><td>".$description."</td><td style=\"text-align: center;\">".$frequency."</td><td style=\"text-align: center;\">".$mandatory."</td><td></td></tr>";
            }
          }
           $stmt->close();
         ?>
      </tbody>
    </table>

我要添加的是最后一个<td></td>中的另一个查询。我想做的是查询第二个数据库表,并说,如果此活动已被添加到用户表中,则回显是,否则,回显否

问题是,将查询添加到while循环中会不断抛出错误。

任何收到建议的人。

1 个答案:

答案 0 :(得分:0)

您可以在第一个查询中将users表连接到Knowledgebase表,而不是对每一行运行另一个查询。如果您使用左联接,您仍将从知识库中获取所有行。

SELECT knowledgebase.*, userstable.activity_id
FROM knowledgebase
     LEFT JOIN userstable ON knowledgebase.id = userstable.activity_id
ORDER BY category ASC

然后在上一个<td>中,可以根据用户表中是否有匹配的行来打印是/否。

...<td><?php echo $row['activity_id'] ? 'YES' : 'NO' ?></td>...

(我为您的其他表和列组成了名称,但我认为它显示了总体思路。)