各位前輩好,最近初學android開發想和資料庫連動。
資料庫目前是本機的xampp -> phpmyadmin,
可以成功讀取資料但卻無法寫入資料,
做法都是利用php連接,
試過HttpURLConnection和OkHttpClient都失敗,
(有加入權限)
外觀只有一個button跟textview,
檢查過php檔案的路徑,有將模擬器加入環境變數,LOG也沒有甚麼異常,
但php仍然得不到資料,希望可以點醒我哪裏設置錯誤,非常感謝。

使用的模擬器↑

環境變數↑

php位置↑

資料庫可成功開啟↑

php程式碼以及模擬器瀏覽器可成功讀取↑

log的內容↑
MainActivity.java
package com.example.connect;
import androidx.appcompat.app.AppCompatActivity;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.io.IOException;
public class MainActivity extends AppCompatActivity {
    private Button btn;
    private TextView textView;
    OkHttpClient client = new OkHttpClient().newBuilder().build();
    FormBody formBody = new FormBody.Builder()
            .add("id", "3")
            .add("name", "abc")
            .build();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn = findViewById(R.id.button);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Thread thread = new Thread(multiThread);
                thread.start();
            }
        });
    }
    private Runnable multiThread = new Runnable(){
        @Override
        public void run() {
            Request request = new Request.Builder()
                    .url("http://10.0.2.2/SendData.php")
                    .post(formBody)
                    .build();
            Call call = client.newCall(request);
            call.enqueue(new Callback() {
                @Override
                public void onResponse(Call call, Response response) throws IOException {
                    String result = response.body().string();
                    Log.i("success", result);
                }
                @Override
                public void onFailure(Call call, IOException e) {
                    Log.e("fail", e.toString());
                }
            });
        }
    };
}
                        資料庫目前是本機的xampp -> phpmyadmin
PHPMyAdmin 是管理介面不是資料庫......
xampp 裡面包的資料庫叫MySQL
PHPMyAdmin是讓你管理用的GUI不是資料庫
PHPMyAdmin vs MySQL
這個差很多......
然後你的LOG有說......
Notice: Trying to get property 'id' of non-object  in C:\xampp\htdocs\SendData.php on line 4
Notice: Trying to get property 'name' of non-object  in C:\xampp\htdocs\SendData.php on line 5
你的PHP
$obj = json_decode($json);
json_decode()完是物件+陣列
你要全部轉成陣列要用json_decode($json,true);
https://www.php.net/manual/en/function.json-decode.php
然後$_POST本來就是陣列了
你可以直接print_r($_POST);看看
所以如果你只是要把POST過去的id,nameecho出來的話你的PHP其實只要
<?php
echo $_POST['id'];
echo $_POST['name'];
就這樣......
由於你貼圖片,我就懶的打程式了。
其實在你「php程式碼以及模擬器瀏覽器可成功讀取」上面那張圖來看。
根本就沒有拿到值。旁邊的錯誤訊息都已經很清楚的告訴你找不到對應的索引值了。
你怎麼會覺得是成功的?