【问题标题】:Connecting PHP with Android check if value exists in Mysql Database将PHP与Android连接检查Mysql数据库中是否存在值
【发布时间】:2015-10-04 19:09:51
【问题描述】:

首先是我的php脚本:

<?php

/*
 * Following code will update a product information
 * A product is identified by product id (pid)
 */

// array for JSON response
$response = array();


    // include db connect class
    require_once __DIR__ . '/db_connect.php';

    // connecting to db
    $db = new DB_CONNECT();

// check for required fields
if (isset($_POST['uid']) && isset($_POST['name'])) {

    $uid = $_POST['uid'];
    $name = $_POST['name'];

    $look = mysql_query("SELECT name FROM users WHERE name ='$name'");
    if(mysql_num_rows($look) == 0){

    // mysql update row with matched pid
    $result = mysql_query("UPDATE users SET name = '$name' WHERE uid = $uid");



    // 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 {

    $response["success"] = 2;
    $response["message"] = "Email already exists! :-(";
}
} else {
    // required field is missing
    $response["success"] = 0;
    $response["message"] = "Required field(s) is missing";

    // echoing JSON response
    echo json_encode($response);
}

?>

所以我检查这个名字是否已经存在。如果是,那么“成功”是否等于 2,如果不是,那么它是否等于 0,并且应该更新该行。但我在 Android 中遇到错误。如果名称不存在,它可以正常工作,但如果值存在,则应用程序崩溃。这是来自 Android 的 Async-Task 类:

/**
 * Background Async Task to  Save product Details
 */
class SaveProductDetails extends AsyncTask<String, String, String> {

    /**
     * Before starting background thread Show Progress Dialog
     */
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        Toast.makeText(getApplicationContext(), "saving..", Toast.LENGTH_SHORT).show();
        // Displays the progress bar for the first time.
        mBuilder.setProgress(100, 0, true);
        mNotifyManager.notify(id, mBuilder.build());
    }

    /**
     * Saving product
     */
    protected String doInBackground(String... args) {

        // getting updated data from EditTexts
        String name = editTextUserName.getText().toString();

        // Building Parameters
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair(StaticVariables.UID, idOfCustomer));
        params.add(new BasicNameValuePair(StaticVariables.NAME, name));

        // sending modified data through http request
        // Notice that update product url accepts POST method
        JSONObject json = jsonParser.makeHttpRequest(StaticVariables.url_update_username,
                "POST", params);

        // check json success tag
        try {
            int success = json.getInt(StaticVariables.TAG_SUCCESS);

            if (success == 1) {
                // successfully updated
                Intent i = getIntent();
                // send result code 100 to notify about product update
                setResult(100, i);
                finish();
            } else if (success == 2) {
                // failed to update product
                Toast.makeText(getApplicationContext(), json.getString("message"), Toast.LENGTH_SHORT).show();
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }

        return null;
    }

    /**
     * After completing background task Dismiss the progress dialog
     **/
    protected void onPostExecute(String file_url) {
        // dismiss the dialog once product uupdated
        // dismiss the dialog once product uupdated
        Toast.makeText(getApplicationContext(), "succesfully", Toast.LENGTH_SHORT).show();
        mBuilder.setContentText("Upload complete");
        // Removes the progress bar
        mBuilder.setProgress(0, 0, false);
        mNotifyManager.notify(id, mBuilder.build());
        finish();
    }
}

【问题讨论】:

  • 日志中是一个空指针:原因:java.lang.NullPointerException:尝试在空对象上调用虚拟方法“int org.json.JSONObject.getInt(java.lang.String)”参考 com.example.fabi.cardview.Edit.EditUserNameActivity$SaveProductDetails.doInBackground(EditUserNameActivity.java:123) at com.example.fabi.cardview.Edit.EditUserNameActivity$SaveProductDetails.doInBackground(EditUserNameActivity.java:89)
  • 编辑问题而不是在 cmets 中发布错误消息

标签: php android mysql


【解决方案1】:

你错过了:

echo json_encode($response);

在这种情况下:

else {

    $response["success"] = 2;
    $response["message"] = "Email already exists! :-(";
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多