使用php从两个不同的mysql表回显数据

使用php从两个不同的mysql表回显数据,php,mysql,join,Php,Mysql,Join,我试图使用php在我的网站上显示来自两个不同mysql表的数据 我的目标是用两个表中的信息显示比赛时间表。第一个包括所有球队及其ID,第二个包括比赛的所有细节。现在,我想用第一个表中相应的团队名称“替换”“home\u id”和“away\u id”字段 各表如下: table "teams" id name ----------- 1 Team 1 2 Team 2 3 Team 3 4 Team 4 ... table "matchschedule" id home

我试图使用php在我的网站上显示来自两个不同mysql表的数据

我的目标是用两个表中的信息显示比赛时间表。第一个包括所有球队及其ID,第二个包括比赛的所有细节。现在,我想用第一个表中相应的团队名称“替换”“home\u id”和“away\u id”字段

各表如下:

table "teams"
id  name
-----------
 1  Team 1
 2  Team 2
 3  Team 3
 4  Team 4
 ...

table "matchschedule"
id   home_id   away_id   goals_home   goals_away   date
 1      1         2          0             2       2016-05-05
 2      3         4          2             1       2016-05-06
 ...
通过以下查询,我将在phpmyadmin中获得所需的数据:

SELECT 
    date, home.name, sp.goals_home, away.name, sp.goals_away 
FROM 
    matchschedule sp 
INNER JOIN 
    teams home on sp.home = home.id 
LEFT JOIN 
    teams away on sp.away = away.id
但是,当我在我的网站中实现此查询并添加下面的代码以显示数据时,“home.name”和“away.name”字段始终为空。为了显示团队名称,我需要更改什么

while($row = mysql_fetch_array($query)) {
  ?>

  <table border=1>
    <tr>
      <?php
        echo "<td>".$row['date']."</td>";
        echo "<td>".$row['home.name']."</td>";
        echo "<td>".$row['goals_home']."</td>";
        echo "<td>".$row['away.name']."</td>";
        echo "<td>".$row['goals_away']."</td>";
      ?>
    </tr>
  </table>

问题是,在查询中,您请求
home.name
mysql返回到php列,标题为
name
,并且您无法再使用
home.name
访问该列。对于
away.name也一样

这就是为什么需要为返回的列设置正确的名称

将查询更改为:

SELECT 
    date, home.name home_name, sp.goals_home, away.name away_name, sp.goals_away 
FROM 
    matchschedule sp 
INNER JOIN 
    teams home on sp.home = home.id 
LEFT JOIN 
    teams away on sp.away = away.id
并在php中调用这些列,如:

    echo "<td>".$row['date']."</td>";
    echo "<td>".$row['home_name']."</td>";
    echo "<td>".$row['goals_home']."</td>";
    echo "<td>".$row['away_name']."</td>";
    echo "<td>".$row['goals_away']."</td>";
echo“$row['date']”;
回显“$row['home_name']”;
回显“$row['goals_home'”;
回显“$row['away_name']”;
回显“$row['goals_away'”;

问题是,在查询时,您请求
home.name
mysql返回到php列,标题为
name
,您无法再使用
home.name
访问该列。对于
away.name也一样

这就是为什么需要为返回的列设置正确的名称

将查询更改为:

SELECT 
    date, home.name home_name, sp.goals_home, away.name away_name, sp.goals_away 
FROM 
    matchschedule sp 
INNER JOIN 
    teams home on sp.home = home.id 
LEFT JOIN 
    teams away on sp.away = away.id
并在php中调用这些列,如:

    echo "<td>".$row['date']."</td>";
    echo "<td>".$row['home_name']."</td>";
    echo "<td>".$row['goals_home']."</td>";
    echo "<td>".$row['away_name']."</td>";
    echo "<td>".$row['goals_away']."</td>";
echo“$row['date']”;
回显“$row['home_name']”;
回显“$row['goals_home'”;
回显“$row['away_name']”;
回显“$row['goals_away'”;

根据您的表格结构,您应该执行以下操作:

SELECT 
    date, home.name AS homeName, sp.goals_home, away.name AS awayName, sp.goals_away 
FROM 
    matchschedule sp 
INNER JOIN 
    teams home on sp.home_id = home.id 
LEFT JOIN 
    teams away on sp.away_id = away.id

因此,基本上将sp.home替换为sp.home\u id,将sp.away\u id替换为sp.away\u id,并更改字段名称,因为表中的字段名称相同。

根据表结构,您应该执行以下操作:

SELECT 
    date, home.name AS homeName, sp.goals_home, away.name AS awayName, sp.goals_away 
FROM 
    matchschedule sp 
INNER JOIN 
    teams home on sp.home_id = home.id 
LEFT JOIN 
    teams away on sp.away_id = away.id

因此,基本上将sp.home替换为sp.home\u id,将sp.away\u id替换为sp.away\u id,并更改字段名称,因为表中的字段名称相同。

谢谢!很好用,谢谢!很好用,谢谢!很好用,谢谢!很好用。