2013-03-31 115 views
0

我想解析下面一堆PHP中的JSON對象。但在某種程度上這是行不通的。在PHP中解析一堆JSON對象

[ 
{"latitute":16.8045558404827,"longitude":36.9140487536788, 
    "missionid":0,"status":0,"waypointid":0}, 
{"latitute":-14.093939943107658,"longitude":21.093734242022038, 
    "missionid":0,"status":0,"waypointid":0} 
] 

$obj = json_decode($_POST["waypoints"]); 


foreach ($json->items as $item) { 

    echo($item->{'longitude'}); 
    echo($item->{'latitude'}); 
    echo($item->{'missionid'}); 
    $query="INSERT INTO dio.wpoint (longitude, latitude, missionid, status,) VALUES ("$item->{'longitude'}.","$item->{'latitude'}.",41)"; 
    mysql_query($query);  

} 
+6

'latitute'可能是拼寫錯誤? –

+0

'mysql_query()'有一個錯誤檢查機制,'mysql_error()'。它可以讓你找出自己出了什麼問題。 –

+2

在for循環中使用'$ obj',而不是'$ json'? – jleft

回答

1

您正在使用$json在你的foreach循環,而不是$obj變量。您也不需要參考成員items,因爲它不存在於您的JSON中。

在查詢中,只有三個值存在,當應該有四個值與列名匹配時 - 我不確定在查詢中確切需要什麼值,但我做出了有根據的猜測。

$obj = json_decode($_POST["waypoints"]); 

foreach ($obj as $item) { 
    echo $item->{'longitude'}; 
    echo $item->{'latitude'}; 
    echo $item->{'missionid'}; 

    $query="INSERT INTO dio.wpoint (longitude, latitude, missionid, status) 
      VALUES (" . $item->{'longitude'} . ", " . 
         $item->{'latitude'} . ", " . 
         $item->{'missionid'} . ", " . 
         $item->{'status'} . 
        ")"; 
    mysql_query($query);  
} 

正如在評論中提到的那樣,拼寫有一些不一致之處,應該修正。根據您的PHP版本,mysql_query可能會被棄用,所以它值得尋找替代品,如MySQLiPDO。您的查詢也可能容易受到SQL注入的影響,請閱讀How to prevent SQL injection in PHP?提供指導。

+0

對不起,我今天全部沒票了!評論所以我記得在5小時內回來 –

+0

不用擔心,謝謝! – jleft

2

就我所知,Mysql不允許使用尾隨逗號。

INSERT INTO dio.wpoint (longitude, latitude, missionid, status,) 

應該

INSERT INTO dio.wpoint (longitude, latitude, missionid, status)