私のAndroidアプリケーションからJSONオブジェクトをWebサービスに送信しています。 (ボレーを使用して)。ここに私のコードの一部があります。PHPのJSONオブジェクトをデコードする
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);
}
日付配列には、データベースに保存するいくつかの日付文字列が含まれています。以下は私のJSONオブジェクト(JSONdates)の出力です。
{ "日付": "水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();
}
は私が ')' unexcepted forearch($のJSON)の近くに構文エラーを取得する機能します。
ご協力いただければ幸いです。すべてのヘルプみんなのforeachのために供給無効な引数() :
EDIT 1:
は
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の警告?私はプログラミングに慣れていないし、修正方法を知らない。
php foreach構文を確認してください。 http://php.net/manual/en/control-structures.foreach.php – Mattia
参考になりました! –