2010-02-06 7 views
1

저는 며칠 동안이 문제를 해결하기 위해 노력하고 있습니다. 그러나 필자가 인정한 제한된 MySQL 지식의 한계에 도달했습니다. groupid와 partyid라는 두 개의 열이있는 조회 테이블 groupparty를 사용하여 두 개의 테이블, 그룹 및 파티가 있습니다. 특정 파티를 감안할 때, 나는 그 파티와 관련된 그룹을 끌어 내기만하면됩니다.많은 관계에서 데이터를 꺼내는 것

<?php 



include $_SERVER['DOCUMENT_ROOT'] . '/includes/connect.inc.php'; 

$partyid = '71'; 
$sql = "SELECT groupid FROM groupparty WHERE groupparty.partyid='$partyid'"; 
$result = mysqli_query($link, $sql); 
while ($row = mysqli_fetch_array($result)) 
{ 
    $groupids[] = array('groupid' => $row['groupid']); 
} 

$sql = "SELECT groupname FROM groups WHERE id='$groupids'"; 
$result = mysqli_query($link, $sql); 
while ($row = mysqli_fetch_array($result)) 
{ 
    $groups[] = array('groupname' => $row['groupname']); 
} 

include 'show.html.php'; 
exit(); 

?> 

그리고 show.html.php의 HTML 전화 :

나에게 다음과 같은 오류를 제공합니다 물론
Group(s): 
<?php foreach ($groups as $group): ?> 
<?php htmlout($group['groupname']); ?> 
<?php endforeach; ?> 

:

여기에 내가 고민했던 스크립트의 골자이다
Group(s): 
Warning: Invalid argument supplied for foreach() in show.html.php on line 2 

나는이 문제가 SELECT groupname FROM groups WHERE id='$groupids'입니다. 그러나이 일반적인 상황을 어떻게 처리 할 수 ​​있습니까?

감사합니다.

+0

먼저'$ groupids' 및'$ groups' 배열을 초기화해야합니다. – poke

+0

감사합니다. 그 오류 하나 없애 버려! – PeterC

답변

0

A는 하나 개의 쿼리에서 모든 일을 조인 사용

SELECT groups.groupname 
FROM groupparty 
JOIN groups 
ON groups.id = groupparty.groupid 
WHERE groupparty.partyid='$partyid' 

또는 당신은 ID의 숫자 중 하나를 일치하도록 SQL 식 IN (..., ..., ...)을 사용하는 일을 당신의 방법을 계속하려는 경우 . 나는 이것을 추천하지 않을 것이다.

+0

감사합니다 마크 - 그래서 지금은 \t $의 SQL은 = "\t \t이 groups.groupid = groupparty.groupid \t \t groupparty.partyid = '$ ON 그룹 \t \t 가입 groups.groupname groupparty FROM \t \t을 선택해야 파티원 "; \t $ result = mysqli_query ($ link, $ sql); \t 동안 ($ 행 = mysqli_fetch_array ($ 결과)) { \t \t \t $ 그룹 [= 어레이 ('그룹 이름'=> $ 행 [ '그룹 이름']); \t} 및 오류 얻을 : 경고 : mysqli_fetch_array() 예상 매개 변수 1, 줄에 index.php를 주어진 부울 12 내가 본 mysqli_result 할 하나이 지난 일 몇 번 ... :-D – PeterC

+0

mysqli_query ($ link, $ sql) 또는 die (mysqli_error ($ link). ':'. $ sql);'를 호출하고 오류 메시지를 살펴보십시오. – VolkerK

+0

@ girosole : 열 이름을 잘못 입력 한 초기 쿼리 버전이 있습니다. 페이지 새로 고침을 시도하십시오. groups.groupid는 groups.id 여야합니다. 그리고 웹 개발자가되고 싶다면 스스로 오류를 디버깅하는 법을 배워야합니다. :) –

관련 문제