Мне нужно вытащить информацию о производственной компании и дистрибьюторской компании для любого фильма, и я использую Freebase для этого. Случается, что я никогда не использовал JSON и не знаю, как интегрировать запрос с моим файлом PHP.PHP и JSON Query для извлечения данных из Freebase
Учебники, которые я читал, отнюдь не понятны, поэтому я всегда сюда приезжаю, чтобы получить помощь, которую я всегда получаю! :)
Итак ... Информация мне нужно вытащить это Freebase Query Editor
И PHP у меня есть это (комментируемые линии являются линиями, я уверен, что это неправильно и/или линии от обучающая я следовал, не Sucess here:
$moviename = "The Matrix";
// [{ "name": "The Matrix", "type": "/film/film", "production_companies": [{ "name": null }], "distributors": [{ "distributor": [{ "name": null }] }] }]
$simplequery = array('name'=>$moviename, 'type'=>"/film/film", 'production_companies'=>array('name'=>null));
//{"id":"/topic/en/philip_k_dick", "/film/writer/film":[]}
//$simplequery = array('id'=>$_POST["freebasewriter"], 'name'=>null, '/film/writer/film'=>array(array('name'=>null, 'id'=>null)));
$queryarray = array('q1'=>array('query'=>$simplequery));
$jsonquerystr = json_encode($queryarray);
#run the query
$apiendpoint = "http://sandbox.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);
$jsonquerystr = urlencode(json_encode($queryarray));
//print_r($resultarray);
//$produtoraarray = $resultarray["q1"]["result"]["production_companies"];
//print_r($produtoraarray);
//$produtorarray = $resultarray["q1"]["result"][];
//$freebaseserver = "http://sandbox.freebase.com";
Может кто-нибудь дать мне помощь здесь заранее спасибо
Цените это много и с Рождеством, кстати :)
?!EDIT @Yanir Shahak ответ помог, и теперь я получаю это:
Array ([code] => /api/status/ok [q1] => Array ([code] => /api/status/error [messages] => Array ([0] => Array ([code] => /api/status/error/mql/result [info] => Array ([count] => 3 [result] => Array ([0] => Array ([name] => Warner Bros. Entertainment) [1] => Array ([name] => Village Roadshow Pictures) [2] => Array ([name] => Silver Pictures))) [message] => Unique query may have at most one result. Got 3 [path] => production_companies [query] => Array ([name] => The Matrix [production_companies] => Array ([error_inside] => . [name] =>) [type] => /film/film)))) [status] => 200 OK [transaction_id] => cache;cache02.sandbox.sjc1:8101;2011-12-24T02:01:34Z;0004)
Теперь ... Как взять данные из там в массивы можно использовать?
Этот код не работает, как я получаю неопределенные индексы
//print_r($resultarray);
//$produtoraarray = $resultarray["q1"]["result"]["production_companies"];
//print_r($produtoraarray);
//$produtorarray = $resultarray["q1"]["result"][];
//$freebaseserver = "http://sandbox.freebase.com";
Я отредактировал свой ответ, чтобы вы меняли. – Yaniro