我希望遍历MySQL结果,这是一个Freebase MIDs数组,并且我希望输出是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>";
}错误:
{“代码”:“/api/状态/错误”,“消息”:{“代码”:“/api/状态/错误”,“消息”:“‘列表’对象没有属性'get'”},“状态”:"500内部错误“,"transaction_id":"cache;cache04.p01.sjc1:8101;2012-05-14T07:31:39Z;0079”}
发布于 2012-05-17 08:03:49
您的$query_array应该只是一个按名称的查询的关联数组,而不是一个关联数组的数组。因此,不是这样:
$q_array = array('q'.$count=>array('query'=>$simple_query));
array_push ($query_array, $q_array );..it应该看起来像这样:
$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",
...
]
}]这使您可以传入一个MIDs数组,并为每个MIDs返回一个名称。从新API获取此URL的URL应如下所示:
https://www.googleapis.com/freebase/v1/mqlread/?query=[{...}]
https://stackoverflow.com/questions/10613103
复制相似问题