0

我想在 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);    

}
4

2 回答 2

2

据我所知,Mysql 不允许尾随逗号。

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

应该

INSERT INTO dio.wpoint (longitude, latitude, missionid, status)
于 2013-03-31T17:22:34.937 回答
1

您在 foreach 循环中使用$jsonas 变量,而不是$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 注入的影响,请阅读如何防止 PHP 中的 SQL 注入?应该提供指导。

于 2013-03-31T18:21:21.837 回答