2014-09-03 2 views
0

이것은 기본적인 질문이되어야하지만, 나는 아주 오랫동안 MySQL을 사용하지 않았고 모든 기본적인 것들을 잊어 버렸습니다. 그래서 SO 프로그래머는 나와 함께 견뎌야합니다. 내가 어디 이벤트 테이블에 event_invitees 모든 행을 선택하려는 hereMysql - 내부 조인 오류를 사용하여 2 테이블에서 열을 선택하십시오

:

표 1 (이벤트) : here

표 2 (사용자)

이 같은 두 테이블이 사용자 이름이 포함되어 있습니다.

SELECT * FROM meetmeup_events WHERE event_invitees LIKE '%$username%' 

지금은 또한 사용자 테이블 (열 user_userphoto라고도 함)에서 event_invitees의 사진을 선택하고 싶습니다 : 내가 사용하여이 작업을 수행 할 수 있었다.

$result = mysql_query("SELECT meetmeup_events.*, meetmeup_user.user_photo 
         FROM meetmeup_events 
         WHERE event_invitees LIKE '%$username%' 
         INNER JOIN meetmeup_user 
          ON meetmeup_user.user_username = meetmeup_events.event_inviter"); 

$rows = array(); 
    while($r = mysql_fetch_assoc($result)) { 
    $rows['meetmeup_user'][] = $r; 
    } 

echo json_encode($rows); 

이 나에게 오류를 준 : mysql_fetch_assoc를() : 공급 인수가

나는이 어떻게 할 수있는

유효한 MySQL의 결과 리소스되지 않습니다 내 시도는이이었다? 내가 뭘 놓치고 있니? 몇 가지 예를 들어 주시겠습니까?

미리 감사드립니다. 나는 작동하는 대답을 받아 들일 것이다!

+2

귀하의 쿼리 구문 순서가있다. WHERE 절은 FROM 절과 모든 JOIN 절 뒤에 와야합니다. mysql_query() 호출 후에 에러를 확인하라. if (! $ result) echo mysql_error(); –

+0

사이드 노트 : [PHP에서 mysql_function을 사용해야하는 이유는 무엇입니까?] (http : // stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php) –

+0

@MichaelBerkowski 당신이 말한대로하십시오. 오류는 사라졌지만 json은 비어 있습니다. mysql 쿼리에 더 많은 오류가 있습니까? – BuddyBud

답변

1

그것의 올바른 순서로 코딩 된 쿼리를 받고, 당신은 시도 테이블 이름을

을 별명의를 사용하여 좀 더 관리 가능한 수 있도록하는 것 같아서의 문제이 : -

SELECT me.*, 
     mu.user_photo 
FROM meetmeup_events me 
    INNER JOIN meetmeup_user mu ON mu.user_username = me.event_inviter 
WHERE me.event_invitees LIKE '%$username%' 

물론이 모든 열 이름이 올바른지 가정하고 해당 필드가 실제로 동일하기 때문에 mu.user_username = me.event_inviter 사실 sence을 않습니다

추가 제안 mysql이 실제로 쿼리를 실행하지 않습니다.

는이 작업을 수행해야한다 : - 반환되는 데이터에서 자바 스크립트 디버거 모양을 사용하여 브라우저에서 이제

$sql = "SELECT me.*, 
      mu.user_photo 
     FROM meetmeup_events me 
      INNER JOIN meetmeup_user mu ON mu.user_username = me.event_inviter 
     WHERE me.event_invitees LIKE '%$username%'"; 

$result = mysql_query($sql); 

$rows = array('mysql_count' => mysql_num_rows($result)); 

while($r = mysql_fetch_assoc($result)) { 
    $rows['meetmeup_user'][] = $r; 
} 

echo json_encode($rows); 

. 'meetmeup_user' 배열이 없어도 최소한 mysql_count 필드가 있어야하며 0 일 경우 사용자 조건을 사용하여 찾을 수 없음을 알 수 있습니다.

+0

답변 해 주셔서 감사합니다. 코드를 작성하려고 시도했지만 오류가 사라졌습니다. 하지만 여전히 JSON이 비어있는 이유를 이해할 수 없었습니다. 좀 더 도와 주실 수 있습니까? – BuddyBud

+0

추가 제안 사항보기 – RiggsFolly

0

문제가 쿼리 itsef 인 것 같지만 mysqli/PDO로 변경해야합니다. 해야합니다

SELECT meetmeup_events.*, meetmeup_user.user_photo 
FROM meetmeup_events 
INNER JOIN meetmeup_user 
ON meetmeup_user.user_username = meetmeup_events.event_inviter 
WHERE event_invitees LIKE '%$username%' 

(끝의 WHERE 절)

는 SQL 바이올린 데모 : http://sqlfiddle.com/#!2/852a2/1

+0

'invitee3'이란 무엇입니까? – BuddyBud

+0

그냥 시험 값 – lpg

+0

답해 주셔서 감사합니다. 오류가 사라졌지만 어떻게 든 JSON 반환 빈. 내가 뭘 놓치고 있니? – BuddyBud

관련 문제