【发布时间】: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() 提供的参数无效 任何帮助家伙?我是编程新手,不知道如何解决。
【问题讨论】:
-
检查 php foreach 语法。 php.net/manual/en/control-structures.foreach.php
-
感谢您的参考!
标签: java php android mysql json