【问题标题】:Parse bunch of JSON Objects in PHP在 PHP 中解析一堆 JSON 对象
【发布时间】:2013-03-31 17:19:38
【问题描述】:

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

}

【问题讨论】:

  • latitute 可能拼写错误?
  • mysql_query() 有一个错误检查机制,mysql_error()。它使您能够自己找出问题所在。
  • 在 for 循环中使用 $obj,而不是 $json?
  • 是的,它拼写错误,但这也在数据库中。我认为循环有问题。我也改成了$obj。但它没有工作
  • 那么你打算用正确的属性名称更新你的代码吗?

标签: php json parsing


【解决方案1】:

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

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

应该是

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

【讨论】:

    【解决方案2】:

    您在 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);    
    }
    

    如 cmets 中所述,拼写存在一些不一致之处,应予以修复。根据您的 PHP 版本,mysql_query 可能已被弃用,因此值得寻找替代方案,例如 MySQLiPDO。您的查询也可能容易受到 SQL 注入的影响,阅读 How to prevent SQL injection in PHP? 应该可以提供指导。

    【讨论】:

    • 对不起,我今天的票都用完了!评论所以我记得在 5 小时后回来
    猜你喜欢
    • 1970-01-01
    • 2013-04-06
    • 2013-07-19
    • 1970-01-01
    • 1970-01-01
    • 2021-03-19
    • 2018-07-28
    • 2015-07-16
    • 2014-04-05
    相关资源
    最近更新 更多