[英]PHP Array Select with inner join
當我在數據庫中執行sql查詢時,我有一個內部聯接在按我想要的方式工作。
SELECT debate.date, school1.name, school2.name
FROM debate
INNER JOIN schools as school1
ON debate.homeid=school1.id
INNER JOIN schools as school2
ON debate.awayid=school2.id
退貨
date name name
19-01-2013 st Peters St Simons
當我嘗試使用php進行此操作時。 我使用相同的select語句並在下面添加。
foreach ($result as $row)
{
$debates[] = array(
'date' => $row['date'],
'awayschool' => $row['name'],
'homeschool' => $row['name'],
);
}
<table>
<tr>
<td><?php echo $debate['date']; ?></td>
<td><?php echo $debate['name']; ?></td>
<td><?php echo $debate['name']; ?></td>
</tr>
</table>
哪個返回
date name name
19-01-2013 st Peters st Peters
但是我希望它返回。
date name name
19-01-2013 st Peters St Simons
在我的陣列中,我嘗試了幾種不同的方法,例如更換
'awayschool' => $row['name'],
與
'awayschool' => $row['school1.name'],
但執行此操作時出現錯誤,提示未定義索引。
我在這里做錯了什么?
這里的問題是,school1.name和school2.name都(在php中)都名為$ row ['name'],您可以使用AS來獲取其中的一個來重命名它
SELECT debate.date, school1.name, school2.name AS name2
FROM debate
INNER JOIN schools as school1
ON debate.homeid=school1.id
INNER JOIN schools as school2
ON debate.awayid=school2.id
然后將您的foreach循環更改為此
foreach ($result as $row)
{
$debates[] = array(
'date' => $row['date'],
'awayschool' => $row['name'],
'homeschool' => $row['name2'],
);
}
像這樣修改您的查詢
SELECT debate.date, school1.name "School1Name", school2.name "School2Name"
FROM debate
INNER JOIN schools as school1
ON debate.homeid=school1.id
INNER JOIN schools as school2
ON debate.awayid=school2.id;
然后:
foreach ($result as $row)
{
$debates[] = array(
'date' => $row['date'],
'awayschool' => $row['School1Name'],
'homeschool' => $row['School2Name'],
);
}
只需為它們使用別名即可,例如school1.name AS SCHLNAME1, school2.name AS SCHLNAME2
那么這些索引將在您的數組中可用,然后將
'awayschool' => $row['SCHLNAME1'],
'awayschool' => $row['SCHLNAME2']
嘗試更改以下內容
<td><?php echo $debate['date']; ?></td>
<td><?php echo $debate['name']; ?></td>
<td><?php echo $debate['name']; ?></td>
對此
<td><?php echo $debate['date']; ?></td>
<td><?php echo $debate['awayschool']; ?></td>
<td><?php echo $debate['homeschool']; ?></td>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.