Массив MIDB Freebase и отправка нескольких запросов в freebase

Я хочу просмотреть результаты MySQL, которые являются массивом MIDB Freebase, и я хочу, чтобы результат был именем статьи 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 Internal Error", "transaction_id": "cache; cache04.p01.sjc1: 8101; 2012-05-14T07: 31: 39Z; 0079"}

Ваш $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; 

Тем не менее, этот код использует старый API Freebase, который должен быть устаревшим. Лучший способ сделать это в новом API – это структурировать все это как один из таких запросов:

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

Это позволяет передавать массив из MID и возвращать имя для каждого из них. URL-адрес для получения этого из нового API должен выглядеть примерно так:

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