2011-12-29 3 views
0

페이지의 모든 사진 앨범을 쿼리하고 각 앨범 표지 사진을 얻으려고합니다. 아래는 빈 결과를 반환하는 코드입니다.빈 배열을 반환하는 fql.multiquery

두 쿼리를 문제없이 별도로 만들 수 있으므로 사용 권한 문제가 아닙니다.

$album_fql = "SELECT aid, owner, name, object_id, cover_pid, cover_object_id 
       FROM album 
       WHERE owner = 'xxxxxxx'"; 

$albumpic_fql = "SELECT pid, src_small 
       FROM photo 
       WHERE pid IN (SELECT cover_pid FROM #query1)"; 

$album_param = array(
       'method' => 'fql.multiquery', 
       'queries' => '{"query1":"' . $album_fql . '", "query2":"' . $albumpic_fql . '"}'); 

$album_fqlResult = $facebook->api($album_param); 

print_r($album_fqlResult); 

아이디어가 있으십니까?

+0

시간 초과 되었습니까? 페이지에 많은 수의 앨범이 있습니까? –

답변

1

다중 쿼리가 아닌 중첩 된 쿼리에서이를 수행 할 수 있습니다. 예를 들어

SELECT pid, src_small 
FROM photo 
WHERE pid in (SELECT cover_pid FROM album where owner={page id here}) 

여기 앨범 목록이 내가

SELECT pid, src_small 
FROM photo 
WHERE pid in (SELECT cover_pid FROM album where owner=40796308305) 
LIMIT 5 

반환 코카콜라의 페이스 북 페이지에서 가져온 다루고있다 :

{ 
    "data": [ 
    { 
     "pid": "40796308305_2143765", 
     "object_id": 110516463305, 
     "src_small": "https://fbcdn-photos-a.akamaihd.net/hphotos-ak-snc1/6570_110516463305_40796308305_2143765_6253354_t.jpg" 
    }, 
    { 
     "pid": "40796308305_8753877", 
     "object_id": "10150500888203306", 
     "src_small": "https://fbcdn-photos-a.akamaihd.net/hphotos-ak-ash4/398389_10150500888203306_40796308305_8753877_1814220329_t.jpg" 
    }, 
    { 
     "pid": "40796308305_8751674", 
     "object_id": "10150500434253306", 
     "src_small": "https://fbcdn-photos-a.akamaihd.net/hphotos-ak-ash4/407475_10150500434253306_40796308305_8751674_1040781388_t.jpg" 
    }, 
    { 
     "pid": "40796308305_8742570", 
     "object_id": "10150498588158306", 
     "src_small": "https://fbcdn-photos-a.akamaihd.net/hphotos-ak-ash4/396541_10150498588158306_40796308305_8742570_1378170213_t.jpg" 
    }, 
    { 
     "pid": "40796308305_8742259", 
     "object_id": "10150498546173306", 
     "src_small": "https://fbcdn-photos-a.akamaihd.net/hphotos-ak-snc7/402667_10150498546173306_40796308305_8742259_287537096_t.jpg" 
    } 
    ] 
} 

그런 다음, 당신의 multiquery을하려고 이름을하려고 시도하는 경우 1 대신 인덱스 0에서 시작하는 쿼리 query0 and query1 이것은 C# SDK가 허용하는 유일한 방법이며, 아마 PHP SDK도 필요합니다.

+0

답변 해 주셔서 감사합니다. 나는 또한 앨범의 이름을 알아야했다. 내가 읽었던 것에서부터 내가 생각하는 멀티 쿼리가 필요하다. – teamdane

1

마지막으로 알아 냈습니다. 쿼리를 1 개의 변수에 병합하고 작은 따옴표를 이스케이프해야했습니다.

$queries = '{ 

"query1" : "SELECT aid, name, cover_pid FROM album WHERE owner = \'xxxxxxxxxxx\'", 

"query2" : "SELECT aid, images FROM photo WHERE pid IN (SELECT cover_pid FROM #query1)" 

}'; 
관련 문제