因此,我正在执行查询并以表的形式返回结果。下面的代码运行良好。
<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循环中会不断抛出错误。
任何收到建议的人。
答案 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>...
(我为您的其他表和列组成了名称,但我认为它显示了总体思路。)