Java 如何使用PHP和android studio(服务器00webhost)将数据导入数据库?

Java 如何使用PHP和android studio(服务器00webhost)将数据导入数据库?,java,php,android-studio,database-connection,registration,Java,Php,Android Studio,Database Connection,Registration,我已经使用000webhost创建了一个数据库,并将我的php文件上传到那个服务器。使用android studio,我试图创建一个用户注册页面。我点击进入注册页面,输入所有信息,点击提交按钮,它会像它应该做的那样将我带回登录页面。但是,信息没有发送到我的数据库。我没有收到错误消息,所以我不知道从哪里开始。下面是我的java类和php文件中的代码,以及清单文件的一个片段 注册请求java类 package amp.riot; import com.android.volley.Response

我已经使用000webhost创建了一个数据库,并将我的php文件上传到那个服务器。使用android studio,我试图创建一个用户注册页面。我点击进入注册页面,输入所有信息,点击提交按钮,它会像它应该做的那样将我带回登录页面。但是,信息没有发送到我的数据库。我没有收到错误消息,所以我不知道从哪里开始。下面是我的java类和php文件中的代码,以及清单文件的一个片段

注册请求java类

package amp.riot;

import com.android.volley.Response;
import com.android.volley.toolbox.StringRequest;

import java.util.HashMap;
import java.util.Map;


public class RegisterRequest extends StringRequest {
    private static final String REGISTER_REQUEST_URL ="https://upbeat.000webhostapp.com/register.php";
    private Map<String, String> params;

    public RegisterRequest(String name, String username, int age, String password,Response.Listener<String> listener){
        super (Method.POST, REGISTER_REQUEST_URL, listener, null);
        params = new HashMap<>();
        params.put("name", name);
        params.put("username", username);
        params.put("password", password);
        params.put("age", age + "");
    }

    public Map<String, String> getParams(){
        return params;
    }

}
package amp.riot;
导入com.android.volley.Response;
导入com.android.volley.toolbox.StringRequest;
导入java.util.HashMap;
导入java.util.Map;
公共类RegisterRequest扩展了StringRequest{
专用静态最终字符串寄存器\u请求\u URL=”https://upbeat.000webhostapp.com/register.php";
私有映射参数;
公共注册表请求(字符串名称、字符串用户名、整数、字符串密码、Response.Listener){
super(Method.POST,REGISTER\u REQUEST\u URL,listener,null);
params=新的HashMap();
参数put(“名称”,名称);
参数put(“用户名”,用户名);
参数put(“密码”,密码);
参数put(“年龄”,年龄+”);
}
公共映射getParams(){
返回参数;
}
}
java类的注册页

public class Register extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_register);

    final EditText etAge= (EditText) findViewById(R.id.etAge);
    final EditText etName= (EditText) findViewById(R.id.etName);
    final EditText etUsername= (EditText) findViewById(R.id.etUsername);
    final EditText etPassword= (EditText) findViewById(R.id.etPassword);
    final Button bRegister= (Button) findViewById(R.id.bRegister);

    bRegister.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            final String name=etName.getText().toString();
            final String username=etUsername.getText().toString();
            final String password=etPassword.getText().toString();
            final int age= Integer.parseInt(etAge.getText().toString());

            final Response.Listener<String> responseListener = new Response.Listener<String>(){
                @Override
                public void onResponse(String response) {
                    try {
                        JSONObject jsonResponse = new JSONObject(response);
                        boolean success = jsonResponse.getBoolean("success");

                        if (success) {
                            Intent intent = new Intent(Register.this, Login.class);
                            Register.this.startActivity(intent);
                        } else {
                            AlertDialog.Builder builder = new AlertDialog.Builder(Register.this);
                            builder.setMessage("Register Failed")
                                    .setNegativeButton("Retry", null)
                                    .create()
                                    .show();
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            };
            RegisterRequest registerRequest = new RegisterRequest(name, username, age, password, responseListener);
            RequestQueue queue = Volley.newRequestQueue(Register.this);
            queue.add(registerRequest);
        }
    });

}
公共类寄存器扩展AppCompative活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u寄存器);
最终EditText etAge=(EditText)findViewById(R.id.etAge);
最终EditText etName=(EditText)findViewById(R.id.etName);
最终EditText etUsername=(EditText)findViewById(R.id.etUsername);
最终EditText etPassword=(EditText)findViewById(R.id.etPassword);
最终按钮b注册表=(按钮)findViewById(R.id.b注册表);
bRegister.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
最终字符串名称=etName.getText().toString();
最终字符串username=etUsername.getText().toString();
最终字符串password=etPassword.getText().toString();
final int age=Integer.parseInt(etAge.getText().toString());
final Response.Listener responseListener=new Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
试一试{
JSONObject jsonResponse=新的JSONObject(响应);
boolean success=jsonResponse.getBoolean(“success”);
如果(成功){
意图=新意图(Register.this、Login.class);
注册。此。开始触觉(意图);
}否则{
AlertDialog.Builder=新建AlertDialog.Builder(Register.this);
builder.setMessage(“注册失败”)
.setNegativeButton(“重试”,null)
.create()
.show();
}
}捕获(JSONException e){
e、 printStackTrace();
}
}
};
RegisterRequest RegisterRequest=新的RegisterRequest(名称、用户名、年龄、密码、响应侦听器);
RequestQueue=Volley.newRequestQueue(Register.this);
添加(registerRequest);
}
});
}
}

清单文件

<?xml version="1.0" encoding="utf-8"?>
   <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="amp.riot">
<uses-permission android:name="android.permission.INTERNET"></uses-permission>

注册PHP文件

<?php
$con = mysqli_connect("localhost", "id202020_sierra", "05alop59", "id202020_plank");

$name = $_POST["name"];
$age = $_POST["age"];
$username = $_POST["username"];
$password = $_POST["password"];
$statement = mysqli_prepare($con, "INSERT INTO user(name, username, age, password) VALUES (?, ?, ?, ?)");
mysqli_stmt_bind_param($statement, "siss", $name, $username, $age, $password);
mysqli_stmt_execute($statement);

$response = array();
$response["success"] = true;  
echo json_encode($response);

尝试
StringRequest
而不是使用
Response.Listener

StringRequest strreq=new-StringRequest(Request.Method.POST,url,new-Response.Listener()){
@凌驾
公共void onResponse(字符串响应){
Toast.makeText(getApplicationContext(),response,Toast.LENGTH_SHORT.show();
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
}
}){
@凌驾
受保护的映射getParams()引发AuthFailureError{
Map params=新的HashMap();
参数put(“id”,id);
参数put(“name”,editText_name.getText().toString());
参数put(“pass”,editText_pass.getText().toString());
返回参数;
}
};
AppController.getInstance().addToRequestQueue(streq);

您在php文件中犯了一个小错误。 变,

对,


这里,s表示字符串,我表示整数。我相信用户名是String,年龄是int。谢谢。

你说你收到了一条错误消息,我们需要它。对不起,我的意思是说没有错误消息,这就是我不知道该怎么办的原因。
StringRequest strreq = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
    @Override
    public void onResponse(String response) {
        Toast.makeText(getApplicationContext(),response,Toast.LENGTH_SHORT).show();
    }
}, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {

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

        params.put("id",id);
        params.put("name",editText_name.getText().toString());
        params.put("pass",editText_pass.getText().toString());
        return params;
    }
};
AppController.getInstance().addToRequestQueue(strreq);
mysqli_stmt_bind_param($statement, "siss", $name, $username, $age, $password);
mysqli_stmt_bind_param($statement, "ssis", $name, $username, $age, $password);