2016-06-21 3 views
0

나는 PHP를 사용하여 내 웹 사이트에 두 개의 서로 다른 MySQL 테이블의 데이터를 표시하려고합니다.PHP를 사용하여 두 개의 다른 MySQL 테이블에서 데이터 에코

내 목표는 두 테이블의 정보로 경기 일정을 표시하는 것입니다. 첫 번째 팀은 모든 팀과 ID를 포함하고 두 번째 팀은 모든 세부 사항을 포함합니다. 이제 "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에서 그 열을 호출

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 

: 테이블의 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

, 다음을 수행해야합니다 따라서 기본적으로 sp.home으로 바꿉니다. sp.home_idsp.awaysp.away_id 및 테이블에서 동일한 필드 이름을 사용하여 필드 이름을 변경하십시오.

+0

감사합니다! 완벽하게 작동합니다. – mario

관련 문제