php - php 表和从数据库中选择,但它们在正确的索引位置不匹配
问题描述
所有开发人员。我正在开发学校管理系统,在数据库中,我有两张表,一张是针对科目的,另一张是为获得的科目分数而设计的,它被称为分数。所以我试图获取主题名称作为表头
我在此查询下方有另一个查询,我正在尝试从分数中获取表数据。
此时,我未能从分数表中匹配主题名称及其分数。
这是我的代码:
<table class="table table-striped table-bordered">
<head>
<tr>
<?php
// Query for Subject Names
$view_subject = $config->prepare("SELECT * FROM subjects");
$view_subject->execute();
while($row = $view_subject->fetch()){
$sub_name = htmlspecialchars($row['sub_name']);
?>
<th class="text-center"style="background-color:#395C7F;color:#fff;"><?php echo $sub_name;?></th>
<?php } ?>
</tr>
</thead>
<body>
<?php
// Query for Subject Scores
$view_scores = $config->prepare("SELECT * FROM scores INNER JOIN subjects ON scores.score_sub_id = subjects.sub_id WHERE scores.std_rand = :random_id ORDER BY scores.score_sub_id ASC");
$view_scores->execute(['random_id' => $rand_ID]);
while($row = $view_scores->fetch()){
$score_id = htmlspecialchars($row['score_id']);
$score_sub_id = htmlspecialchars($row['score_sub_id']);
$score_mid_amount = htmlspecialchars($row['score_mid_amount']);
$score_final_amount = htmlspecialchars($row['score_final_amount']);
?>
<tr>
<td class="text-black" data-title="Subject"><?php echo $score_mid_amount;?></td>
</tr>
<?php } ?>
</tbody>
</table>
解决方案
在您的第二个循环中,您输入了 '<tr>' 包装每个 '<td>',这意味着每个都到达不同的行,'<td>' 应该与每个 '<th>' 的数量一样多线....所以:
<?php
// Query for Subject Scores
$view_scores = $config->prepare("SELECT * FROM scores INNER JOIN subjects ON scores.score_sub_id = subjects.sub_id WHERE scores.std_rand = :random_id ORDER BY scores.score_sub_id ASC");
$view_scores->execute(['random_id' => $rand_ID]);
?>
<tr>
<?php
while($row = $view_scores->fetch()){
$score_id = htmlspecialchars($row['score_id']);
$score_sub_id = htmlspecialchars($row['score_sub_id']);
$score_mid_amount = htmlspecialchars($row['score_mid_amount']);
$score_final_amount = htmlspecialchars($row['score_final_amount']);
?>
<td class="text-black" data-title="Subject"><?php echo $score_mid_amount;?></td>
<?php } ?>
</tr>
</tbody>
</table>
这应该可以修复您的表格,但只会创建一行!如果您有不止一行,则需要添加另一个循环来包装这一行,它将在内循环之外创建新的“<tr>”。
顺便说一句:我假设第二个 while 循环与第一个循环完全一样长......因为如果它的长度不同或排序不同,那么每行每 <th> 应该有相同数量的 <td>方式你会有一个问题......这可以通过调整你的SELECT或创建一个带有ID的数组并根据第一个带来的键从第二个循环中注入数据来解决。
推荐阅读
- python - Django 表单我可以将 Django 表单中的默认“用户名”字段更改为“职位”吗
- r - 在 R 中定义缺失值?
- f# - F# 中元组列表的语法
- php - 将对服务器上文件的任何请求重定向到另一个文件
- office365 - 使用 MS Graph API 恢复日历事件而不向与会者发送通知
- asp.net-core-3.1 - 如何在 .NET Core 3.1 Azure Web App 中获取关机原因
- reactjs - 无法读取未定义的属性“环境”
- c# - 在 Management Studio 中工作但在 Visual Studio 中不工作的相同 SQL 查询
- javascript - 在 JavaScript ES5 中对数组进行子类化
- r - Mac 10.9.5 上的 R 3.3.3 安装 devtools 包时遇到问题