【问题标题】:Array of Freebase MIDs and sending multiple queries to freebaseFreebase MID 数组并向 freebase 发送多个查询
【发布时间】:2012-05-16 06:26:50
【问题描述】:

我想遍历 MySQL 结果,这是一个 Freebase MID 数组,我希望输出是 Freebase 文章的名称!

这是我的代码:

$query = "SELECT `mid` FROM `items`";
$result = mysql_query($query);
$count = 1;
while ($row = mysql_fetch_array($result)) {
   $mid = $row['mid'];
   $simple_query = array('name'=> null, 'mid'=>$mid);
   $q_array = array('q'.$count=>array('query'=>$simple_query));
   array_push ($query_array, $q_array );
   $count++;
}

$jsonquerystr = json_encode($query_array);
$apiendpoint = "http://api.freebase.com/api/service/mqlread?queries";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "$apiendpoint=$jsonquerystr");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$jsonresultstr = curl_exec($ch);
curl_close($ch);
$resultarray = json_decode($jsonresultstr, true); #true:give us the json struct as an array

foreach($resultarray as $name){
    echo "$name<br>";
}

错误:

{ "code": "/api/status/error", "messages": [ { "code": "/api/status/error", "message": "'list' 对象没有属性 'get '" } ], "status": "500 内部错误", "transaction_id": "cache;cache04.p01.sjc1:8101;2012-05-14T07:31:39Z;0079" }

【问题讨论】:

    标签: php freebase mql


    【解决方案1】:

    您的$query_array 应该只是按名称查询的关联数组,而不是关联数组的数组。所以不要这样:

    $q_array = array('q'.$count=>array('query'=>$simple_query));
    array_push ($query_array, $q_array );
    

    ..它应该看起来像这样:

    $q_array = array('query'=>$simple_query);
    $query_array['q'.$count] = $q_array;
    

    但是,该代码使用的是即将被弃用的旧版 Freebase API。在new API 中执行此操作的更好方法是将其全部构建为一个查询,如下所示:

    [{
      "mid": null,
      "name": null,
      "topics:mid|=":[
        "/m/045c7b",
        "/m/0d6lp",
        "/m/021ympy",
        ...
        ]
    }]
    

    这使您可以传入一组 MID 并为每个 MID 取回一个名称。从新 API 中获取此内容的 URL 应如下所示:

    https://www.googleapis.com/freebase/v1/mqlread/?query=[{...}]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多