PHP未收到改装后的数据

PHP未收到改装后的数据,php,android,retrofit,Php,Android,Retrofit,我想通过改型来更新一个表,所以我有一个API,如下所示 public interface StRegAPI { @FormUrlEncoded @POST("/stdreg.php") public void regStudent( @Field("stdid") String stdid, @Field("stdpass") String stdpass, @Field("stdadd") String stdadd, @Fiel

我想通过改型来更新一个表,所以我有一个API,如下所示

public interface StRegAPI {
@FormUrlEncoded
@POST("/stdreg.php")
public void regStudent(
        @Field("stdid") String stdid,
        @Field("stdpass") String stdpass,
        @Field("stdadd") String stdadd,
        @Field("stdphn") String stdphn,
        @Field("stdemail") String stdemail,
        Callback<Response> callback);
      }
公共接口StRegAPI{
@FormUrlEncoded
@POST(“/stdreg.php”)
公立学校学生(
@字段(“stdid”)字符串stdid,
@字段(“stdpass”)字符串stdpass,
@字段(“stdadd”)字符串stdadd,
@字段(“stdphn”)字符串stdphn,
@字段(“stdemail”)字符串stdemail,
回调(回调);
}
我的回调实现在哪里

StRegAPI api = adapter.create(StRegAPI.class);

//Defining the method insertuser of our interface
api.regStudent(

        //Passing the values by getting it from editTexts
        rn_list.getSelectedItem().toString(),
        etstpass.getText().toString(),
        etstad.getText().toString(),
        etstphn.getText().toString(),
        etstemail.getText().toString(),


        //Creating an anonymous callback
        new Callback<Response>() {
            @Override
            public void success(retrofit.client.Response result, retrofit.client.Response response) {
                //On success we will read the server's output using bufferedreader
                //Creating a bufferedreader object
                BufferedReader reader = null;

                //An string to store output from the server
                String output = "";

                try {
                    //Initializing buffered reader
                    reader = new BufferedReader(new InputStreamReader(result.getBody().in()));

                    //Reading the output in the string
                    output = reader.readLine();
                } catch (IOException e) {
                    e.printStackTrace();
                }

                //Displaying the output as a toast
                Toast.makeText(StudReg.this, output, Toast.LENGTH_LONG).show();
            }

            @Override
            public void failure(RetrofitError error) {
                //If any error occured displaying the error as toast
                Toast.makeText(StudReg.this, error.toString(),Toast.LENGTH_LONG).show();
            }
        }
);
  }
StRegAPI=adapter.create(StRegAPI.class);
//定义接口的插入器方法
api.regStudent(
//通过从EditText获取值来传递值
rn_list.getSelectedItem().toString(),
etstpass.getText().toString(),
etstad.getText().toString(),
etstphn.getText().toString(),
etstemail.getText().toString(),
//创建匿名回调
新回调函数(){
@凌驾
public void成功(reformation.client.Response结果,reformation.client.Response){
//成功后,我们将使用bufferedreader读取服务器的输出
//创建bufferedreader对象
BufferedReader reader=null;
//用于存储服务器输出的字符串
字符串输出=”;
试一试{
//初始化缓冲读取器
reader=new BufferedReader(new InputStreamReader(result.getBody().in());
//读取字符串中的输出
输出=reader.readLine();
}捕获(IOE异常){
e、 printStackTrace();
}
//将输出显示为toast
Toast.makeText(StudReg.this,输出,Toast.LENGTH_LONG.show();
}
@凌驾
公共无效失败(错误){
//如果发生任何错误,请将错误显示为toast
Toast.makeText(StudReg.this,error.toString(),Toast.LENGTH_LONG.show();
}
}
);
}
我的PHP文件是

<?php
//checking if the script received a post request or not 
if($_SERVER['REQUEST_METHOD']=='POST'){

 //Getting post data 
 $stdid=$_POST['stdid'];
 $stdpass = $_POST['stdpass'];
 $stdadd = $_POST['stdadd'];
 $stdphn = $_POST['stdphn'];
 $stdemail=$_POST['stdemail'];

 //checking if the received values are blank
 if($stdid == '' || $stdpass== '' || $stdad == '' || $stdemail=='' || $stphn==''){
 //giving a message to fill all values if the values are blank
 echo 'please fill all values';
 }else{
 //If the values are not blank
 //Connecting to our database by calling dbConnect script 
 require_once('connection.php');

 //Creating an SQL Query to insert into database 
 //Here you may need to change the retrofit_users because it is the table I created
 //if you have a different table write your table's name

 //This query is to check whether the username or email is already registered or not 
 $sql = "SELECT * FROM student WHERE stud_id=$stdid";

 //If variable check has some value from mysqli fetch array 
 //That means username or email already exist 
 $check = mysqli_fetch_array(mysqli_query($con,$sql));

 //Checking check has some values or not 
 if(!(isset($check))){
 //If check has some value that means username already exist 
 echo 'studentid does not exist';
 }else{ 
 //If username is not already exist 
 //Creating insert query 
 $sql = "UPDATE student set password='$stdpass', addrs='$stdad',phn_no=$stdphn,email='$stdemail' WHERE stud_id=$stdid";

 //Trying to ins db 
 if(mysqli_query($con,$sql)){
 //If inserted successfully 
 echo 'successfully registered';
 }else{
 //In case any error occured 
 echo 'oops! Please try again!';
 }
 }
 //Closing the database connection 
 mysqli_close($con);
 }
}else{
echo 'error';
}
删除
回调)来自您的请求
regStudent()

因此,您的API请求类如下所示

public interface StRegAPI {
@FormUrlEncoded
@POST("/stdreg.php")
public void regStudent(
        @Field("stdid") String stdid,
        @Field("stdpass") String stdpass,
        @Field("stdadd") String stdadd,
        @Field("stdphn") String stdphn,
        @Field("stdemail") String stdemail);  
 }

您必须将您的请求排队,然后只有它将数据发送到服务器


        Call<Response> call =api.regStudent(

        //Passing the values by getting it from editTexts
        rn_list.getSelectedItem().toString(),
        etstpass.getText().toString(),
        etstad.getText().toString(),
        etstphn.getText().toString(),
        etstemail.getText().toString());

        call.enqueue(new Callback<Response>() {
        @Override
        public void onResponse(Response<Response> response) {
            if (!response.isSuccess()) {
                Log.d(LOG_TAG, "No Success");
            }

        }

        @Override
        public void onFailure(Throwable t) {
            // api failed
              }
        });


Call=api.regStudent(
//通过从EditText获取值来传递值
rn_list.getSelectedItem().toString(),
etstpass.getText().toString(),
etstad.getText().toString(),
etstphn.getText().toString(),
etstemail.getText().toString());
call.enqueue(新回调(){
@凌驾
公共响应(响应){
如果(!response.issucess()){
Log.d(Log_标签,“无成功”);
}
}
@凌驾
失效时的公共无效(可丢弃的t){
//api失败
}
});
我希望它会有帮助

删除
回调)来自您的请求
regStudent()

因此,您的API请求类如下所示

public interface StRegAPI {
@FormUrlEncoded
@POST("/stdreg.php")
public void regStudent(
        @Field("stdid") String stdid,
        @Field("stdpass") String stdpass,
        @Field("stdadd") String stdadd,
        @Field("stdphn") String stdphn,
        @Field("stdemail") String stdemail);  
 }

您必须将您的请求排队,然后只有它将数据发送到服务器


        Call<Response> call =api.regStudent(

        //Passing the values by getting it from editTexts
        rn_list.getSelectedItem().toString(),
        etstpass.getText().toString(),
        etstad.getText().toString(),
        etstphn.getText().toString(),
        etstemail.getText().toString());

        call.enqueue(new Callback<Response>() {
        @Override
        public void onResponse(Response<Response> response) {
            if (!response.isSuccess()) {
                Log.d(LOG_TAG, "No Success");
            }

        }

        @Override
        public void onFailure(Throwable t) {
            // api failed
              }
        });


Call=api.regStudent(
//通过从EditText获取值来传递值
rn_list.getSelectedItem().toString(),
etstpass.getText().toString(),
etstad.getText().toString(),
etstphn.getText().toString(),
etstemail.getText().toString());
call.enqueue(新回调(){
@凌驾
公共响应(响应){
如果(!response.issucess()){
Log.d(Log_标签,“无成功”);
}
}
@凌驾
失效时的公共无效(可丢弃的t){
//api失败
}
});

我希望这会有帮助

从改型回调来看,它没有将@Field数据传递给PHP。请帮助我,从改装回调来看,它并没有将@Field数据传递给PHP。请帮帮我,拉贾斯卡兰先生,尽管我尝试了另一种方法。这仍然是一片迷雾。你的回答解决了这个疑惑。谢谢拉贾斯卡兰先生,尽管我尝试了另一种方法并使用它。这仍然是一片迷雾。你的回答解决了这个疑惑。