【发布时间】:2017-01-25 13:56:43
【问题描述】:
我正在尝试从一个表中获取所有数据并使用另一个表中的 id 输出它。我的团队有成员,每个成员都有一组分数。
我需要使用我的 thirs 表来输出成员和得分,该表包含成员和团队的 ID,因此是 team_members 表。
每个成员有 8 个分数,是 1-5 的单个值或整数,不多也不少。我想简单地输出在他们旁边得分的行中的成员。我真的很挣扎:
我将来自表单输入的团队 ID 存储在会话中,因此我的选择查询可以查看该 ID 以向我显示来自该特定团队的成员:
$sql = "SELECT t.team_name AS team_name, m.score_1, GROUP_CONCAT(m.firstName, ' ', m.lastName) AS team_members
FROM members AS m
JOIN team_members AS tm
ON tm.member_id = m.member_id
JOIN teams AS t
ON t.team_id = tm.team_id
WHERE t.dashboard_id = $dashboard_id AND t.team_id = $teamSelect
GROUP BY t.team_name";
if(!$result = $conn->query($sql)) {}
while($row = $result->fetch_assoc()){
echo '<h2>' . $row["team_name"] . '</h2><br>';
$names = explode(',', $row['team_members']);
echo '<div class="teamTable">';
echo '<div class="tableHeader">';
echo '<div class="col"> </div>';
echo '<div class="col">SDO</div>';
echo '<div class="col">DCTO</div>';
echo '<div class="col">ED</div>';
echo '<div class="col">CA</div>';
echo '<div class="col">DHPT</div>';
echo '<div class="col">IRT</div>';
echo '<div class="col">GL</div>';
echo '<div class="col">IL</div>';
echo '</div>';
}
我现在要做的是按团队 ID 逐行输出成员姓名
foreach($names as $name) {
$namearray = preg_split('/\s+/', $name);
echo '<div class="tableNameRow">';
echo '<div class="col">' . $name . '</div>';
$sql2 = "SELECT score_1 FROM members WHERE firstName + lastName = '" . $name . "'";
$result2 = $conn->query($sql2);
if($result2->num_rows > 0){
while($row2 = $result2->fetch_assoc()){
echo '<div class="col">' . $row2['score_1'] . '</div>';
}
echo '<br>';
}
echo '</div>';
}
我要做的就是在行中显示每个成员,他们旁边的 8 个分数如下所示:
member1 1 2 3 4 5 2 3 4
member2 4 3 2 5 1 2 4 2
member3 2 3 4 5 5 4 3 1
我只在我的 SELECT 中包含 score_1 来解决这个问题。在我上面的代码中发生的情况是它逐行输出每个用户,然后从每个成员那里获取 score_1 并将其放在与成员名称相同的行上。
表格
members
member_id(PK), firstName, lastName, score_1, score_2, score_3, score_4, score_5, score_6, score_7, score_8
teams
team_id(PK), team_name
team_members
team_member_id, member_id(FK), team_id(FK)
【问题讨论】:
-
您的表成员对每个分数都有一个单独的列(score_1、score_2、score_3....)?那么为什么不在查询中选择这些分数呢?
-
您的查询不是 sql 注入安全的。这是一个很大的安全整体。请使用Prepared Statements。
-
@radicarl 我知道它可以注射,但是我可以触摸你的第一条评论吗?你能解释一下你的意思吗?
-
@Strawberry 我想要一种能够按团队向成员展示的方式
-
@Strawberry 我有点急于重新开始整个事情......?