2016-06-21 10 views
0

私はphpを使用して私のウェブサイトに2つの異なるmysqlテーブルのデータを表示しようとしています。phpを使用して2つの異なるmysqlテーブルのデータをエコーする

私の目的は、2つのテーブルの情報を使ってマッチ・スケジュールを表示することです。最初のチームにはすべてのチームとIDが含まれ、2番目のチームにはすべての詳細が含まれます。私は今、 "home_id"フィールドと "away_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> 

最終結果:

2016-05-05 [] 0 [] 2 
2016-05-06 [] 2 [] 1 

答えて

1

問題は、クエリで使用すると、タイトルnameとPHPの列へhome.name MySQLの返還を要求したときにあなたがいることを達することができないということです列は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でそれらの列を呼び出す:あなたのテーブルのstrctureに基づいて

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>"; 
+0

ありがとうございました!完全に正常に動作します。 – mario

1

、次の操作を行う必要があります。

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.homesp.home_idsp.awaysp.away_idと同じフィールド名を持つテーブルのフィールド名を変更します。

+0

ありがとう!完全に正常に動作します。 – mario

関連する問題