php - 为什么我的数据在表中填充了两次,但在数据库中只存储了一次?
问题描述
所以我的表两次显示同一行数据。但是在数据库中它只存储一次。我认为while循环可能存在问题。我正在将数据插入到数据库中,该数据库在数据库中存储良好,但是当我将其打印到屏幕上时,它会重复相同的值两次。
<?php
include ("dbConnect.php");
$query = $db->prepare("select * from tasks LEFT JOIN challenge ON tasks.task = challenge.challenge where start_date <= NOW() and end_date >= NOW() ORDER BY challenge.achievement DESC limit 8");
$query->execute();
// Display search result
if (!$query->rowCount() == 0) {
echo "<table id=\"example\" style=\"font-family:arial;color:#ffffff;\" class=\"table table-striped table-bordered\" style=\"width:100%\">";
echo "<thead><tr>
<th style=\"border-style:solid;border-width:3px;border-color:#575757;background:#575757;\">Customer ID</th>
<th style=\"border-style:solid;border-width:3px;border-color:#575757;background:#575757;\">Name</th>
<th style=\"border-style:solid;border-width:3px;border-color:#575757;background:#575757;\">Score</th>
<th style=\"border-style:solid;border-width:3px;border-color:#575757;background:#575757;\">Challenge</th>
<th style=\"border-style:solid;border-width:3px;border-color:#575757;background:#575757;\">Rank</th>
</tr></thead><tbody>";
$position = 1;
while ($results = $query->fetch()) {
$count = count($results);
echo "<tr><td style=\"border-style:solid;border-width:1px;border-color:#D3D3D3;\">";
echo $results['cust_id'];
echo "</td><td style=\"border-style:solid;border-width:1px;border-color:#D3D3D3;\">";
echo $results['forename'];
echo "</td><td style=\"border-style:solid;border-width:1px;border-color:#D3D3D3;\">";
echo $results['achievement'];
echo "</td><td style=\"border-style:solid;border-width:1px;border-color:#D3D3D3;\">";
echo $results['challenge'];
echo "<td style=\"border-style:solid;border-width:1px;border-color:#D3D3D3;\">";
echo "Position: $position";
$position = $position+1;
}
}
echo '</td></tr></tbody>';
echo "</table>";
?>
解决方案
看起来您在循环中缺少关闭的 td 和 tr 。但是在您使用 LEFT JOIN 的查询中,您将在每个挑战中获得尽可能多的任务。因此,如果您的任务 1 有 2 个挑战,那么它将显示任务 1、2 次。每个挑战 1 个。希望这可以帮助。下面我只是将您关闭的 TD TR 移动到循环中。
<?php
include ("dbConnect.php");
$query = $db->prepare("select * from tasks LEFT JOIN challenge ON tasks.task = challenge.challenge where start_date <= NOW() and end_date >= NOW() ORDER BY challenge.achievement DESC limit 8");
$query->execute();
// Display search result
if (!$query->rowCount() == 0) {
echo "<table id=\"example\" style=\"font-family:arial;color:#ffffff;\" class=\"table table-striped table-bordered\" style=\"width:100%\">";
echo "<thead><tr>
<th style=\"border-style:solid;border-width:3px;border-color:#575757;background:#575757;\">Customer ID</th>
<th style=\"border-style:solid;border-width:3px;border-color:#575757;background:#575757;\">Name</th>
<th style=\"border-style:solid;border-width:3px;border-color:#575757;background:#575757;\">Score</th>
<th style=\"border-style:solid;border-width:3px;border-color:#575757;background:#575757;\">Challenge</th>
<th style=\"border-style:solid;border-width:3px;border-color:#575757;background:#575757;\">Rank</th>
</tr></thead><tbody>";
$position = 1;
while ($results = $query->fetch()) {
$count = count($results);
echo "<tr><td style=\"border-style:solid;border-width:1px;border-color:#D3D3D3;\">";
echo $results['cust_id'];
echo "</td><td style=\"border-style:solid;border-width:1px;border-color:#D3D3D3;\">";
echo $results['forename'];
echo "</td><td style=\"border-style:solid;border-width:1px;border-color:#D3D3D3;\">";
echo $results['achievement'];
echo "</td><td style=\"border-style:solid;border-width:1px;border-color:#D3D3D3;\">";
echo $results['challenge'];
echo "<td style=\"border-style:solid;border-width:1px;border-color:#D3D3D3;\">";
echo "Position: $position";
$position = $position+1;
echo '</td></tr></tbody>';
}
}
echo '</tbody>';
echo "</table>";
?>
推荐阅读
- python - 使用 Jupyter notebook 在 Matplotlib 中执行 python 脚本文件,但它总是不显示数字。为什么?
- java - 在 Java 8 中为什么我们不能使用方法引用将 Math.random() 转换为 Math::random
- c# - 迭代变量如何只读?
- windows - pkg-config 已安装但未找到
- php - php邮件功能在新服务器中不起作用
- matlab - 在 Peter Corke 的机器人书中,相同的函数 `rpy2r()` 会产生不同的结果?
- javascript - Web前端按钮单击html标签不起作用
- octave - 八度不返回退出代码
- excel - 导入excel时跳过重复行
- linux-device-driver - 应用设备树覆盖会触发驱动程序探测吗?