我创建了一个包含2个活动的应用程序。在第一个活动中,我正在使用Web服务器上的php文件将一些记录插入mysql数据库,如下所示:

<?php
    if($_SERVER["REQUEST_METHOD"]=="POST") {
        require 'connection.php';
        createUsername();
    }

    function createUsername() {

        global $connect;

        $username = $_POST["username"];

        $query = " INSERT INTO statistics(username) VALUES ('$username');";
        $result = $connect->query($query);

        $lastInsertId = $connect->insert_id; // I need this variable
    }
?>


在第二个活动中,我只是使用另一个如下所示的php文件显示记录:

<?php
    if($_SERVER["REQUEST_METHOD"]=="POST") {
        include 'connection.php';
        showUserName();
    }

    function showUserName() {
        global $connect;

        $query = "SELECT * FROM statistics ORDER BY score DESC, time ASC";

        $result = $connect->query($query);
        $numberOfRows = $result->num_rows;

        $temp_array = array();

        if($numberOfRows > 0) {
            while ($row = $result->fetch_assoc()) {
                $temp_array[] = $row;
            }
        }

        header('Content-Type: application/json');
        echo json_encode(array("statistics"=>$temp_array));
    }
?>


在第一个活动中插入记录时,将有一个名为$lastInsertId的变量。我需要在我的应用活动中使用此变量,如下所示:

JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, showUrl, new Response.Listener<JSONObject>() {
    @Override
    public void onResponse(JSONObject response) {
        try {
            JSONArray users = response.getJSONArray("statistics");
            for (int i = 0; i < users.length(); i++) {
                JSONObject student = users.getJSONObject(i);

                String userName = student.getString("username");

                statistics.append(userName + " \n");
            }

        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
}


我需要做什么,才能将该变量从php文件传递到我的Android活动?

最佳答案

如果我正确无误,则可以像对第二项服务一样将$lastInsertId打印为json响应。当您点击第一个服务并返回json响应后,您可以在应用中使用shared preference保存该值,这样它将持续存在。我在这里没有问题。

09-12 18:36