java - 将android studio中的变量值发送到php

标签 java php android mysql bindparam

我在将 Android Studio 变量内的值传递给 php 代码时遇到问题。在本例中,我想将 Message.java 中变量“group_id”内的值传递给 DbOperation.php。这意味着最后,DbOperation.php 中的函数“getMessages”可以获得变量“group_id”的值并选择 MySQL 数据库中的特定表。我还是 Android Studio 新手,请帮我解决这个问题。非常喜欢。

例如:变量“group_id”的值为“ABC123”,DbOperation.php中的“getMessages”函数将执行“SELECT a.id, a.message, a.sentat, a.users_id, b.name FROM ABC123_messages a,用户 b WHERE a.users_id = b.id ORDER BY a.id ASC;"

下面的代码是Message.java的java类

 SharedPreferences sharedPreferences = getActivity().getSharedPreferences(Config.SHARED_PREF_GROUP, Context.MODE_PRIVATE);
 group_id = sharedPreferences.getString(Config.GROUP_SHARED_PREF, "Not Available");


 private void fetchMessages() {
    StringRequest stringRequest = new StringRequest(Request.Method.POST, URLs.URL_FETCH_MESSAGES,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    //dialog.dismiss();

                    try {
                        JSONObject res = new JSONObject(response);
                        JSONArray thread = res.getJSONArray("messages");
                        for (int i = 0; i < thread.length(); i++) {
                            JSONObject obj = thread.getJSONObject(i);
                            int userId = obj.getInt("userid");
                            String message = obj.getString("message");
                            String name = obj.getString("name");
                            String sentAt = obj.getString("sentat");
                            Message messagObject = new Message(userId, message, sentAt, name);
                            messages.add(messagObject);
                        }

                        adapter = new ThreadAdapter(getActivity(), messages, AppController.getInstance().getUserId());
                        recyclerView.setAdapter(adapter);
                        scrollToBottom();

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {

                }
            }){
        @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            Map<String, String> params = new HashMap<>();
            params.put("group_id", group_id);
            return params;
        }
    };

    AppController.getInstance().addToRequestQueue(stringRequest);
}

这是index.php中php代码的一部分

$app->post('/messages', function () use ($app){
verifyRequiredParams(array('group_id'));
$group_id = $app->request()->post('group_id');
$db = new DbOperation();
$messages = $db->getMessages($group_id);
$response = array();
$response['error']=false;
$response['messages'] = array();
while($row = mysqli_fetch_array($messages)){
    $temp = array();
    $temp['id']=$row['id'];
    $temp['message']=$row['message'];
    $temp['userid']=$row['users_id'];
    $temp['sentat']=$row['sentat'];
    $temp['name']=$row['name'];
    array_push($response['messages'],$temp);
}
echoResponse(200,$response);});


function verifyRequiredParams($required_fields){
$error = false;
$error_fields = "";
$request_params = $_REQUEST;
// Handling PUT request params
if ($_SERVER['REQUEST_METHOD'] == 'PUT') {
    $app = \Slim\Slim::getInstance();
    parse_str($app->request()->getBody(), $request_params);
}
foreach ($required_fields as $field) {
    if (!isset($request_params[$field]) || strlen(trim($request_params[$field])) <= 0) {
        $error = true;
        $error_fields .= $field . ', ';
    }
}

if ($error) {
    // Required field(s) are missing or empty
    // echo error json and stop the app
    $response = array();
    $app = \Slim\Slim::getInstance();
    $response["error"] = true;
    $response["message"] = 'Required field(s) ' . substr($error_fields, 0, -2) . ' is missing or empty';
    echoResponse(400, $response);
    $app->stop();
}}

这是DbOperation.php中的函数之一

public function getMessages($group_id){
    $stmt = $this->conn->prepare("SELECT a.id, a.message, a.sentat, a.users_id, b.name FROM ?_messages a, users b WHERE a.users_id = b.id ORDER BY a.id ASC;");
    $stmt->bind_param("s",$group_id);
    $stmt->execute();
    $result = $stmt->get_result();
    return $result;}

最佳答案

在 Android 中代码看起来不错。但我认为你还没有捕捉到 PHP 中的发送数据。使用

 $_POST["group_id"]

关于java - 将android studio中的变量值发送到php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43581966/

相关文章:

Java调用带有对象参数的方法到main方法

php - 下拉选择器中的 WooCommerce 品牌分类术语列表

php - 多个账户的捐款总和(变量)

android - 注入(inject)改造android kotlin

java - 定期发送大量邮件

java - 在Google上实现操作

android - 任何适用于 Android 应用程序的免费泰米尔语字体的引用

android - 如何将 ImageView 数组添加到 ListView 的 ArrayAdapter

java - 在 Javassist 中,返回顺序有保证吗?

php - 如果不单独使用,在 if 语句中使用相同的比较运算符 (===) 会失败吗?