我有一个名为" schedule"的mysql表。对于NFL赛程,其中有一个gameid,homeid,awayid,weekno和seasonno。对于每个团队的BYE周,在offid中有一个0,他们的id在homeid中。
注意:所有再见周都发生在第4周和第11周之间。
所以我想简单地让团队的城市和BYE周参加一个MYSQL查询,加入我的"团队" table(teamid,location)所以我可以在表格中显示它。
我试过了......
$sql = "SELECT *,
h.location AS home,
a.location AS away,
h.teamid AS homeid,
a.teamid AS awayid,
s.weekno
FROM schedule s
INNER JOIN teams h ON s.homeid = h.teamid
LEFT JOIN teams a ON s.awayid = a.teamid
WHERE s.seasonno = $currentyear
AND s.awayid=0
ORDER BY weekno ASC";
$schedule= mysqli_query($connection, $sql);
if (!$schedule) {
die("Database query failed: " . mysqli_error($connection));
} else {
// Placeholder for data
$data = array();
$number=1;
// Loop through results
$i=4;
while($row = mysqli_fetch_assoc($schedule)) {
while($row['weekno']==$i) {
${'tabledata'.$i}.=$row['home'];
}
$i++;
}
}
但是我每个星期都会得到FIRST团队,而不是所有团队。例如,第4周应该是田纳西州和新英格兰。
4 Tennessee
5 Miami
6 Tampa Bay
7 Chicago
8 Jacksonville
9 Houston
10 San Francisco
11 Cleveland
这是显示代码......
<table>
<tr><th>Week #</th><th>Teams</th></tr>
<tr><td>4</td><td><?php echo $tabledata4;?></td><tr>
<tr><td>5</td><td><?php echo $tabledata5;?></td><tr>
<tr><td>6</td><td><?php echo $tabledata6;?></td><tr>
<tr><td>7</td><td><?php echo $tabledata7;?></td><tr>
<tr><td>8</td><td><?php echo $tabledata8;?></td><tr>
<tr><td>9</td><td><?php echo $tabledata9;?></td><tr>
<tr><td>10</td><td><?php echo $tabledata10;?></td><tr>
<tr><td>11</td><td><?php echo $tabledata11;?></td><tr>
</table>
对于应该简单的查询/显示来说,它看起来已经过于复杂了。例如,我甚至不确定我是否需要进行INNER JOIN但是太过困惑而无法确定。
有人可以让我走上正确的道路,避免进一步的卷积吗?
答案 0 :(得分:1)
你的内部while
循环正在创造我认为的问题。 (这实际上是一个奇迹,它显示任何东西)
while($row['weekno']==$i) {
${'tabledata'.$i}.=$row['home'];
}
$i++;
将其更改为
$i = $row['weekno']
${'tabledata'.$i}.=$row['home'];
它应该有效。