Необходимое поле (ы) отсутствует результат

Я просто оставлю этот вопрос коротким. Что не так с моим PHP-кодом, он продолжает выводить 0 или Обязательное поле (-ы) отсутствует. Вот код

<?php // array for JSON response $response = array(); // check for required fields if (isset($_POST['id']) && isset($_POST['status_id'])) { $id = $_POST['id']; $status_id = $_POST['status_id']; // include db connect class require_once __DIR__ . '/db_connect.php'; // connecting to db $db = new DB_CONNECT(); // mysql update row with matched pid $result = mysql_query("UPDATE pims_liip_pallet_purchase_order SET status = '$status_id' WHERE id = $id"); // check if row inserted or not if ($result) { // successfully updated $response["success"] = 1; $response["message"] = "Product successfully updated."; // echoing JSON response echo json_encode($response); } else { } } else { // required field is missing $response["success"] = 0; $response["message"] = "Required field(s) is missing"; // echoing JSON response echo json_encode($response); } ?> 

Вот сообщения в моем приложении

 protected String doInBackground(String... args) { // TODO Auto-generated method stub // Check for success tag int success; String status_id = statusID.getText().toString(); try { // Building Parameters List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("status_id", status_id)); Log.d("request!", "starting"); //Posting user data to script JSONObject json = jsonParser.makeHttpRequest( UPDATE_COMMENTS_URL, "POST", params); // full json response Log.d("Post Update", json.toString()); // json success element success = json.getInt(TAG_SUCCESS); if (success == 1) { Log.d("Updated!", json.toString()); finish(); return json.getString(TAG_MESSAGE); }else{ Log.d("Update Failure!", json.getString(TAG_MESSAGE)); return json.getString(TAG_MESSAGE); } } catch (JSONException e) { e.printStackTrace(); } return null; } 

Любые ответы будут очень уважаемы: D Спасибо!

Ваша ошибка говорит все. Поскольку вы попадаете в бит } else { ... } , это означает isset($_POST['id']) && isset($_POST['status_id']) является ложным.

Другими словами, ваша форма:

  • не используя POST, но GET. В этом случае добавьте method="post" в тэг <form> . (на самом деле POST является поведением по умолчанию, поэтому, если это так, вам, вероятно, придется удалить или изменить method="GET" из тега формы)
  • и / или ваша форма не содержит полей ввода с name="id" и / или name="status_id"

Обновленный вопрос добавляет код Android. Следовательно, это обновление:

Я сомневаюсь, что jsonParser.makeHttpRequest фактически jsonParser.makeHttpRequest кодированную форму json string. Это скорее всего будет просто POST json data на веб-сервере. $ _POST PHP не будет автоматически заполняться этими данными, поскольку он обрабатывает только данные, закодированные в форме.

Вероятно, вам нужно прочитать эти данные из stdIn.

Пытаться:

 if ($_SERVER['REQUEST_METHOD'] === 'POST') { $rawPostData = file_get_contents("php://input"); $postData = (array)json_decode($rawPostData); } 

И затем используйте $ postData, где вы в противном случае использовали бы $ _POST

Просто отлаживайте $_POST['id'] и $_POST['status_id'] . Перед этой строкой.

 if (isset($_POST['id']) && isset($_POST['status_id'])) { 

вы найдете ответ автоматически. Надеемся, что одна из двух переменных post не установлена. Для отладки используйте print_r($_POST);