2011-09-12 5 views
2

Je suis un peu désespérée à ce sujet. J'ai un site avec une boîte de commentaires avec environ 183000 commentaires que je veux sauvegarder. Mais chaque fois que je fais un fql.query, je reçois seulement 100 articles. J'avais essayé:Exporter les commentaires de fb: comments

SELECT xid, object_id, post_id, time, text, id FROM comment WHERE xid='bdatapoyo' ORDER BY time DESC 

et après cela, en utilisant la dernière "temps"

SELECT xid, object_id, post_id, time, text, id FROM comment WHERE xid='bdatapoyo' AND time >= xxxxxxx ORDER BY time DESC 

, mais ce dernier ne me donne un commentaire ..

J'ai fait une page PHP avec ce code , mais encore une fois, il ne saisit que 100 articles:

<?php   
    require 'php-sdk/src/facebook.php'; 

    $facebook = new Facebook(array(
    'appId' => 'XXXXXXXXXX', 
    'secret' => 'XXXXXXXXXX', 
    'cookie' => true, 
    )); 

    $conexion = mysql_connect("localhost", "XXXX", "XXXX"); 
    mysql_select_db("TVN", $conexion); 

    $time_old = "1315070888"; 
    do { 

     $fql = "SELECT fromid,time,text FROM comment WHERE xid='bdatapoyo' AND time >= " . $time_old . " ORDER BY time"; 

     $response = $facebook->api(array(
      'method' => 'fql.query', 
      'query' =>$fql, 
     )); 

     foreach($response as $key => $value) { 
      $sql = "INSERT INTO comment (text, uuid, time) VALUES ('" . $value["text"] . "', '" . $value["fromid"] . "', '" . $value["time"] . "')";  
      $result = mysql_query($sql); 
     } 

     $time_old = $response[count($response)-1]["time"]; 
     print_r($time_old); 
    } while (count($response) > 0); 

    ?> 

Répondre

2

OK, j'ai été en mesure de tirer cela avec LIMIT et OFFSET. Le FQL correct est

SELECT fromid,time,text FROM comment WHERE xid='bdatapoyo' LIMIT 100 OFFSET 0 

puis pagination avec l'OFFSET

0

est cette configuration de code pour importer chaque commentaire à un db de tous les utilisateurs sur votre site? Qu'est-ce que xid = bdatapoyo?

Questions connexes