2011-12-29 8 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}) 

, например, вот список обложек альбомов я получил от страницы Facebook Cocacola в

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, то попробуйте назвать запросы, начинающиеся с индекса 0 вместо 1. например query0 и 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)" 

}'; 
Смежные вопросы