2012-07-20 67 views
1

我對PHP非常陌生,我需要通過curl調用api並將結果解析爲可導入數據庫的格式。如何將結果保存爲csv或將其直接推送到數據庫中?API調用通過curl,json導致csv或mysql

由於

API呼叫接收這些結果

[{ 「MAC」: 「AC86740410B8」, 「網站ID」: 「1032」, 「名稱」: 「主RTR」, 「降序」: 「」,「loc」:{「lat」: - 25.887635,「lng」:28.150488,「levelId」:0,「source」:「manual」},「lrrt」:1,「lrne」:4}]

這是我的代碼

$ch = curl_init(); 
$fp = fopen("data.txt", "a+"); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_URL, 'http://theapi.com/'); 
curl_setopt ($ch, CURLOPT_USERPWD, "username:password"); 
curl_setopt ($ch, CURLOPT_FILE, $fp); 
CURLOPT_HTTPHEADER >= array('Content-type: application/json'); 
$json = ('data.txt'); 
//json_decode($json, true); 
//$data = json_decode(file_get_contents('data.txt'), true); 
var_dump(json_decode($json)); 
var_dump(json_decode($json, true)); 
curl_exec($ch); 
curl_close($ch); 
fclose($fp); 

回答

0

您可以訪問解碼結果是這樣的:

$data = json_decode('[{"mac":"AC86740410B8","siteId":"1032","name":"main-rtr","desc":"","loc":{"lat":-25.887635,"lng":28.150488,"levelId":0,"source":"manual"},"lrrt":1,"lrne":4}]'); 

$arrayFromResults = array(
    $data[0]->mac, 
    $data[0]->loc->lat, 
    $data[0]->lrne 
); 

var_dump($arrayFromResults); 

var_dump($data); 

http://codepad.org/kzZ7nhck

然後很容易地通過該陣列putcsv:

http://php.net/manual/en/function.fputcsv.php

...或記錄到一個DB:

http://www.php.net/manual/de/pdo.exec.php