我想在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);
}
答案 0 :(得分:2)
据我所知,Mysql不允许使用尾随逗号。
INSERT INTO dio.wpoint (longitude, latitude, missionid, status, )
应该是
INSERT INTO dio.wpoint (longitude, latitude, missionid, status)
答案 1 :(得分:1)
您在foreach循环中使用$json
作为变量,而不是$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
可能已被弃用,因此值得研究替代方案,例如MySQLi和PDO。您的查询也可能容易受到SQL注入攻击,阅读How to prevent SQL injection in PHP?应提供指导。