将JSONArray数据发送到MySQL

时间:2018-02-15 08:08:49

标签: php android mysql android-volley

我有一个JSONArray,从Android本地SQLite数据库中检索,我想将其发送到MySQL数据库。 JSONArray结构如下

[
    {
        "value1": "1518518041",
        "value2": "90.390342",
        "value3": "23.7758309"
    },
    {
        "value1": "1518518071",
        "value2": "90.3903512",
        "value3": "23.7758192"
    },
    {
        "value1": "1518518200",
        "value2": "90.390342",
        "value3": "23.7758309"
    },
    ....
]

现在我正在尝试使用Volley JsonArrayRequest将数据发送到MySQL,这里是代码

JSONArray jsonArray  = db.getResults();
RequestQueue queue = Volley.newRequestQueue(this);
JsonArrayRequest sendSqliteData = new JsonArrayRequest(Request.Method.POST, URL, jsonArray,
        new Response.Listener<JSONArray>(){
            @Override
            public void onResponse(JSONArray jsonArray) {
                Toast.makeText(this, "Success", Toast.LENGTH_LONG).show();
            }
        },
        new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {
                Toast.makeText(this, volleyError.getMessage().toString(), Toast.LENGTH_LONG).show();
            }
        }) {
    @Override
    protected Map<String, String> getParams() throws AuthFailureError {
        HashMap<String, String> params = new HashMap<>();
        try {
            params.put("value1", jsonArray.getString("value1"));
            params.put("value2", jsonArray.getString("value2"));
            params.put("value3", jsonArray.getString("value3"));                
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return params;
    }
};;
queue.add(sendSqliteData);

这是php脚本

<?php
// connect to database
$link = mysqli_connect($hostname, $username, $password);
mysqli_select_db($link, "myDatabase");

// get the JSONArray the app sends
$contents = file_get_contents('php://input');

$jsonArray = json_decode($contents, true);
$jsonCount = count($jsonArray);

for ($i = 0; $i < $jsonCount; $i++) {
    $item = $jsonArray[$i];
    $value1 = utf8_decode($item['value1']);
    $value2 = utf8_decode($item['value2']);
    $value3 = utf8_decode($item['value3']);


    $query = "INSERT INTO dataTable VALUES('$value1', '$value2', '$value3')";
    mysqli_query($link, $query);
}

我做错了什么?为什么数据不在MySQL表中写?

修改 我在Try / Catch块中遇到的问题。

@Override
    protected Map<String, String> getParams() throws AuthFailureError {
        HashMap<String, String> params = new HashMap<>();
        try {
            params.put("value1", jsonArray.getString("value1"));
            params.put("value2", jsonArray.getString("value2"));
            params.put("value3", jsonArray.getString("value3"));                
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return params;
    }

在Try / Catch块中,我正在从jsonArray检索String,而我正在请求齐射来制作JsonArray帖子。我的问题是我的数据已经在jsonArray变量中,格式为给定的上JSON样本。如何使用PHP将JSON发送到服务器。我正在尝试使用此代码,但它无法正常工作。请建议我或编辑给定的代码以正确完成。

0 个答案:

没有答案