MAHESH WAGHELA Ответов: 1

Android volley post sending параметр равен нулю


Я пытаюсь вставить данные в mysql, и он показывает "данные вставлены успешно", но пустая строка вставлена в mysql, и для этого я отладил и обнаружил, что Volley stringRequest равен нулю. Я думаю, что параметр равен нулю в таком случае, как поступить, пожалуйста, предложите.


мой код-белво

<pre><?php

include 'DatabaseConfig.php' ;
 
 $con = mysqli_connect($HostName,$HostUser,$HostPass,$DatabaseName);
 
  $f_name = false;
 if(isset($_POST['name'])){
     $f_name = $_POST['name'];

}
echo $f_name;

$l_name = false;
if(isset($_POST['fname'])){
     $l_name = $_POST['fname'];

}
echo $l_name;

    
 
   
 
 $Sql_Query = "insert into dajs (name,fname) values ('$f_name','$l_name')";
 
 if(mysqli_query($con,$Sql_Query)){
 
 echo 'Data Inserted Successfully';
 
 }
 else{
 
 echo 'Try Again';
 
 }
 mysqli_close($con);
?>



и мой Java-код ниже

<pre>package com.example.digitalrukhivalmikisamaj;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.app.ProgressDialog;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.EditText;
import android.widget.Button;

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

import com.android.volley.DefaultRetryPolicy;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.RetryPolicy;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;



public class applicationform extends AppCompatActivity {

    TextView tv;

    // Creating EditText.
    EditText FirstName, LastName ;

    // Creating button;
    Button InsertButton;

    // Creating Volley RequestQueue.
    RequestQueue requestQueue;

    // Create string variable to hold the EditText Value.
    String FirstNameHolder, LastNameHolder;

    // Creating Progress dialog.
    ProgressDialog progressDialog;

    // Storing server url into String variable.
    String HttpUrl = "https://dajsapp.000webhostapp.com/get_data1.php";

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

        tv=findViewById(R.id.ttppl);
        tv.setText("ડિજિટલ ગુજરાતી અનુસૂચિત\n જાતિ સમાજ એપ ");

        // Assigning ID's to EditText.
        FirstName = (EditText) findViewById(R.id.name);
        LastName = (EditText) findViewById(R.id.fname);

        // Assigning ID's to Button.
        InsertButton = (Button) findViewById(R.id.btn1);

        // Creating Volley newRequestQueue .
        requestQueue = Volley.newRequestQueue(applicationform.this);

        progressDialog = new ProgressDialog(applicationform.this);

        // Adding click listener to button.
        InsertButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                // Showing progress dialog at user registration time.
                progressDialog.setMessage("Please Wait, We are Inserting Your Data on Server");
                progressDialog.show();

                // Calling method to get value from EditText.
                GetValueFromEditText();



                // Creating string request with post method.
                StringRequest stringRequest = new StringRequest(Request.Method.POST, HttpUrl,
                        new Response.Listener<String>() {
                            @Override
                            public void onResponse(String ServerResponse) {

                                // Hiding the progress dialog after all task complete.
                                progressDialog.dismiss();

                                // Showing response message coming from server.
                                Toast.makeText(applicationform.this, ServerResponse, Toast.LENGTH_LONG).show();
                            }
                        },
                        new Response.ErrorListener() {
                            @Override
                            public void onErrorResponse(VolleyError volleyError) {

                                // Hiding the progress dialog after all task complete.
                                progressDialog.dismiss();

                                // Showing error message if something goes wrong.
                                Toast.makeText(applicationform.this, volleyError.toString(), Toast.LENGTH_LONG).show();
                            }
                        }) {
                    @Override
                    protected Map<String, String> getParams() {

                        // Creating Map String Params.
                        Map<String, String> params = new HashMap<String, String>();

                        // Adding All values to Params.
                        params.put("first_name", FirstNameHolder);
                        params.put("last_name", LastNameHolder);

                        return params;
                    }

                };


                // Creating RequestQueue.
                RequestQueue requestQueue = Volley.newRequestQueue(applicationform.this);

                // Adding the StringRequest object into requestQueue.
                requestQueue.add(stringRequest);

            }
        });


    }

    // Creating method to get value from EditText.
    public void GetValueFromEditText(){

        FirstNameHolder = FirstName.getText().toString().trim();
        LastNameHolder = LastName.getText().toString().trim();
        


    }




}



Так что, наконец, от отладки его залп stringRequest параметр send NULL пожалуйста, предложите, как преодолеть от этой проблемы.

Что я уже пробовал:

Я искал много блогов, но не нашел ни одной идеальной идеи, поэтому я здесь для того, чтобы обратиться за помощью.

Mohibur Rashid

Ваш параметр в java-приложении-first_name и last_name, но в вашем PHP-скрипте это fname и lname

MAHESH WAGHELA

Я изменил его в PHP, но результат тот же.

Mohibur Rashid

можете ли вы также обновить этот вопрос?

А также

распечатайте запрос в файле журнала и попробуйте запустить его в cli

Также войдите в $_SERVER, чтобы получить, если вы получаете запрос правильно

Вход $_POST, где с помощью print_r

И, наконец, напишите html-форму с методом post с аналогичным полем и попробуйте отправить и посмотреть, как она работает.

MAHESH WAGHELA

Я обновил свой вопрос, и вы можете увидеть мой файл logcat

1 Ответов

Рейтинг:
2

OriginalGriff

Это не решение, а серьезная проблема, которую вам нужно решить через все ваше приложение: никогда не объединяйте строки для построения SQL-команды. Это оставляет вас широко открытыми для случайной или преднамеренной атаки SQL-инъекции, которая может уничтожить всю вашу базу данных. Вместо этого всегда используйте параметризованные запросы.

Когда вы объединяете строки, вы вызываете проблемы, потому что SQL получает такие команды, как:

SELECT * FROM MyTable WHERE StreetAddress = 'Baker's Wood'
Цитата, добавленная пользователем, завершает строку в том, что касается SQL, и вы получаете проблемы. Но могло быть и хуже. Если я приду и наберу вместо этого: "x';DROP TABLE MyTable;--", то SQL получит совсем другую команду:
SELECT * FROM MyTable WHERE StreetAddress = 'x';DROP TABLE MyTable;--'
Которые SQL видит как три отдельные команды:
SELECT * FROM MyTable WHERE StreetAddress = 'x';
Совершенно правильный выбор
DROP TABLE MyTable;
Вполне допустимая команда "удалить таблицу"
--'
А все остальное-это комментарии.
Так оно и происходит: выбирает любые совпадающие строки, удаляет таблицу из базы данных и игнорирует все остальное.

Поэтому всегда используйте параметризованные запросы! Или будьте готовы часто восстанавливать свою БД из резервной копии. Вы ведь регулярно делаете резервные копии, не так ли?


MAHESH WAGHELA

Примите ваше предложение но это не мое решение вопроса если вы знаете решение моего вопроса то пожалуйста ответьте

OriginalGriff

Ваш вопрос может подождать: если вы не пройдете через все свое приложение и не исправите его, у вас будут гораздо большие проблемы, чем небольшая ошибка в простом фрагменте кода ...