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



所以我正在执行一个查询并以表格的形式返回结果。 下面的代码运行良好。

<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>内的另一个查询。 我想做的是查询第二个数据库表,并说这个活动是否已添加到用户表中,回显 YES,否则,回显 NO。

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

任何建议都感激地收到。

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

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>...

(我为您的其他表和列编造了名称,但我认为它显示了大致的想法。

最新更新