簡體   English   中英

具有內部聯接的PHP數組選擇

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM