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