Php 从两次联接的表中分配变量
我试图将$row[]值赋给一个变量,以便在表单中使用它。因为我两次加入表,所以有两列具有相同的名称。我尝试使用如图所示的别名来分配变量,但它们返回null,可能是语法错误?。查询结果很好Php 从两次联接的表中分配变量,php,sql,join,Php,Sql,Join,我试图将$row[]值赋给一个变量,以便在表单中使用它。因为我两次加入表,所以有两列具有相同的名称。我尝试使用如图所示的别名来分配变量,但它们返回null,可能是语法错误?。查询结果很好 <?php //This will list player info so the user can get the correct player ID $STH = $db->query(' SELECT wW.id, wW.dateStart, wW.dateE
<?php
//This will list player info so the user can get the correct player ID
$STH = $db->query('
SELECT wW.id, wW.dateStart, wW.dateEnd, wW.weekNumber, wW.team1Id, wW.team2Id, wT1.name, wT2.name
FROM wdlWeeks wW
JOIN wdlTeams wT1 on wT1.id = wW.team1Id
JOIN wdlTeams wT2 on wT2.id = wW.team2Id
');
//Setting the fetch mode
$STH->setFetchMode(PDO::FETCH_ASSOC);
//Output all players with their ID's
while($row = $STH->fetch()) {
$id = $row['wW.id'];
$team1Name = $row['wT1.name'];
$team2Name = $row['wT2.name'];
$dateStart = $row['wW.dateStart'];
$dateEnd = $row['wW.dateEnd'];
$weekNumber = $row['wW.weekNumber'];
echo "<option value='$id'>$team1Name vs. $team2Name (Week: $weekNumber - $dateStart - $dateEnd)</option>";
echo "<br>";
}
?>
你不需要wW。在每个变量的前面,列将作为它们的名称返回
另外,由于您有两个同名的列,因此您必须修改查询,以便为其中一个名称列提供类似以下的另一个名称
$STH = $db->query('
SELECT wW.id, wW.dateStart, wW.dateEnd, wW.weekNumber,
wW.team1Id, wW.team2Id, wT1.name, wT2.name as t2name
FROM wdlWeeks wW
JOIN wdlTeams wT1 on wT1.id = wW.team1Id
JOIN wdlTeams wT2 on wT2.id = wW.team2Id
');
//Setting the fetch mode
$STH->setFetchMode(PDO::FETCH_ASSOC);
//Output all players with their ID's
while($row = $STH->fetch()) {
$id = $row['id'];
$team1Name = $row['name'];
$team2Name = $row['t2name'];
$dateStart = $row['dateStart'];
$dateEnd = $row['dateEnd'];
$weekNumber = $row['weekNumber'];
echo "<option value='$id'>$team1Name vs. $team2Name (Week: $weekNumber - $dateStart - $dateEnd)</option>";
echo "<br>";
}
每个字段可以使用别名: 选择wW.id、wW.dateStart、wW.dateEnd、wW.weekNumber、wW.team1Id、wW.team2Id、wT1.name作为Team1Name,wT2.name作为Team2Name 来自wdlWeeks wW 在wT1.id=wW.team1Id上加入wdlTeams wT1 在wT2.id=wW.team2Id上加入wdlTeams wT2 然后:
$team1Name=$row['team1Name']默认情况下别名是列名,因此您有两个使用'name'的列,并且根本不包括表别名。例如,在查询中使用AS wT1name,然后将这些字符串用于从$row提取的别名。像这样:
<?php
//This will list player info so the user can get the correct player ID
$STH = $db->query('
SELECT wW.id, wW.dateStart, wW.dateEnd, wW.weekNumber, wW.team1Id, wW.team2Id, wT1.name AS wT1name, wT2.name AS wT2name
FROM wdlWeeks wW
JOIN wdlTeams wT1 on wT1.id = wW.team1Id
JOIN wdlTeams wT2 on wT2.id = wW.team2Id
');
//Setting the fetch mode
$STH->setFetchMode(PDO::FETCH_ASSOC);
//Output all players with their ID's
while($row = $STH->fetch()) {
$id = $row['id'];
$team1Name = $row['wT1name'];
$team2Name = $row['wT2name'];
$dateStart = $row['dateStart'];
$dateEnd = $row['dateEnd'];
$weekNumber = $row['weekNumber'];
echo "<option value='$id'>$team1Name vs. $team2Name (Week: $weekNumber - $dateStart - $dateEnd)</option>";
echo "<br>";
}
?>