必填字段缺少结果

时间:2013-12-12 08:14:33

标签: php mysql

我会简短地提出这个问题。我的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谢谢!

2 个答案:

答案 0 :(得分:1)

你的错误说明了一切。由于您到达} else { ... }位,表示isset($_POST['id']) && isset($_POST['status_id'])为假。

换句话说,您的表单是:

  • 没有使用POST,但是GET。在这种情况下,请在method="post"标记中添加<form>。 (实际上,POST是默认行为,因此如果是这种情况,您可能必须从表单标记中删除或更改method="GET"
  • 和/或您的表单不包含name="id"和/或name="status_id"
  • 的输入字段

更新的问题会添加Android代码。因此更新:

我怀疑jsonParser.makeHttpRequest实际发布了一个表单编码的json字符串。它更可能只是将json数据发送到网络服务器。 PHP的$ _POST不会自动填充此数据,因为它只处理表单编码数据。

您可能需要从stdIn读取此数据。

尝试:

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

然后使用$ postData,否则你将使用$ _POST

答案 1 :(得分:0)

只需调试$_POST['id']$_POST['status_id']即可。 在此之前。

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

你会自动找到答案。希望没有设置两个post变量中的一个。 对于调试,请使用print_r($_POST);