2012-12-21 77 views
0

我正在使用Facebook Graph API從Facebook用戶列表中獲取性別。我有用戶的ID(他們是我的應用程序的當前用戶)。爲此,我不需要使用API​​,因爲性別不需要特殊權限(即使我已經獲得了基本信息權限)。基本上我使用一個while循環來循環遍歷MySQL表上的所有行,這些行存儲了我在用戶使用應用程序時抓取的FB ID。當我在while循環外部執行json_decode代碼時,它的效果很好(但顯然只能抓取表中的第一個實例)。然後,當我把它放在一個循環中,頁面不會加載。它只是坐下來,並試圖永久加載。這裏是代碼:Facebook圖表 - 性別信息無法在while循環中檢索

$sql = "SELECT * FROM fb_id ORDER BY timestamp DESC"; 
$result = $mysqli->query($sql);      

while($row = mysqli_fetch_array($result)){ 
        $jsonurl = "https://graph.facebook.com/".$row['fb_id']; 
        $json = file_get_contents($jsonurl,0,null,null); 
        $json_output = json_decode($json); 
        $user_gender = $json_output->gender; 
        echo $user_gender; 
        } 

        while($row = mysqli_fetch_array($result)){ 
        echo "<a href='http://www.facebook.com/".$row['fb_id']."' target='_blank'><img src='http://graph.facebook.com/".$row['fb_id']."/picture/' /></a>"; 
        } 

您會看到代碼的最高位是性別。底部循環是顯示用戶的個人資料圖片。該底部循環正常工作。

任何想法爲什麼Facebook Graph的調用會卡住?謝謝!

回答

2

底部循環是顯示用戶的個人資料圖片。該底部循環正常工作。

底部循環也是如此。

任何想法爲什麼Facebook Graph的調用會卡住?

Graph API很好,不用擔心。

您正在遍歷數據庫查詢結果一次,以獲取用戶詳細信息並回顯其性別。

之後,數據庫查詢結果在其結尾處,沒有更多行要獲取。

這使得第一次檢查時第二個while循環的條件變爲false,因此循環內容甚至不會執行一次。

爲什麼你放了第二個while循環呢?您正在訪問與第一個循環相同的列值 - 爲什麼不把兩個代碼塊的內容放入一個代碼塊後一個while關鍵字?

+0

Ooooh,這是一個徹頭徹尾的錯誤,我明白你在說什麼。我不知道爲什麼我這樣做,我的腦子裏一定有其他的東西。讓我試一試這個修復方法,我會盡快回復你! – MillerMedia

+0

工作過,謝謝! – MillerMedia