【问题标题】:Decode JSON Object in php在 php 中解码 JSON 对象
【发布时间】:2016-07-22 22:03:41
【问题描述】:

我将一个 JSON 对象从我的 android 应用程序发送到我的网络服务。 (使用截击)。这是我的代码的一部分。

private void sendtoDB(final String ngno){

    String tag_string_req = "req_save_to_db";

    final JSONObject JSONdates = new JSONObject();

    for(int i = 0 ; i < dates.size() ; i++){

        try{
            JSONdates.put("date", dates.get(i));

        }catch (Exception e){
            e.printStackTrace();
        }

    }

    StringRequest strReq = new StringRequest(Request.Method.POST,
            AppConfig.URL_UpdateDates, new Response.Listener<String>() {

        @Override
        public void onResponse(String response) { ....}


        @Override
        protected Map<String, String> getParams() {
            // Posting params to register url
            Map<String, String> params = new HashMap<String, String>();
            params.put("ngno", ngno);
            params.put("JSON", JSONdates.toString());
            return params;
        }
    };
    AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
}

dates 数组包含几个我想存储在我的数据库中的日期字符串。下面是我的 JSON 对象 (JSONdates) 的输出。

{"日期":["2016 年 3 月 30 日星期三 00:00:00 GMT+05:30","2016 年 3 月 31 日星期四 00:00:00 GMT+05:30 2016"]}

我的问题是我如何在我的 php 中接收这个 JSON 对象,以及如何正确解码它并将每个日期值获取到一个变量,以便我可以相应地执行 sql 查询。

这是我的 php 代码。

<?php
require_once 'include/DB_Functions.php';
$db = new DB_Functions();

if(isset($_POST['ngno']) && isset($_POST['JSON']) ){

     $ngno = $_POST['ngno'];
     $json = json_decode($_POST['JSON'], true);


     foreach($json){
         $date = $json['date'];
         $job = $db->updateDates($ngno, $date);

         if($job){
              $response["error"] = FALSE;
              echo json_encode($response);
         }

         else{
             $response["error"] = TRUE;
             $response["error_msg"] = "Unknown error occurred in Updating!";
             echo json_encode($response);
        }
    }

}

else{
    $response["error"] = TRUE;
    $response["error_msg"] = "Dates are missing!";
    echo json_encode($response);     
}
?>

updateDates 函数

public function updateDates($ngno, $date){

    $stmt = $this->conn->prepare("INSERT INTO datepicker(ngno, date) VALUES($ngno, $date)");
    $result = $stmt->execute();
    $stmt->close();
}

在 forarch($json) unexcepted ')' 附近出现语法错误。

任何帮助将不胜感激。

编辑 1:

更改了php代码中的foreach循环如下

foreach($dates as $date){
    error_log[$date];
    $job = $db->updateDates($ngno, $date);

    if($job){
        $response["error"] = FALSE;
        echo json_encode($response);
    }

    else{
        $response["error"] = TRUE;
        $response["error_msg"] = "Unknown error occurred in Updating!";
        echo json_encode($response);
    }
}

但现在它说,PHP 警告:为 foreach() 提供的参数无效 任何帮助家伙?我是编程新手,不知道如何解决。

【问题讨论】:

标签: java php android mysql json


【解决方案1】:

foreach($json){ 更改为foreach($json['dates'] as $date){ 并删除$date = $json['date']; 行。有关 foreach 语法的更多信息,请参阅php manual about foreach

【讨论】:

  • 更改了代码,但现在它给出以下错误,PHP 警告:为 foreach() 提供的参数无效
猜你喜欢
  • 2018-04-02
  • 2014-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
相关资源
最近更新 更多