📜  使用PHP和Volley Android在MySQL中进行CRUD操作–插入数据

📅  最后修改于: 2021-05-13 16:07:23             🧑  作者: Mango

众所周知,我们可以使用MySQL来使用结构查询语言以RDBMS的形式存储数据。 SQL是用于添加,访问和管理数据库内容的最流行的语言。最著名的是它的快速处理,可靠的可靠性,易用性和使用灵活性。该应用程序可用于多种用途,包括数据仓库,电子商务和日志记录应用程序。 MySQL提供了一些基本但最基本的操作集,可以帮助您轻松地与MySQL数据库进行交互,这些操作称为CRUD操作。

在上一篇文章中,我们已经看到在PhpMydmin服务中创建一个新的SQL数据库。在本文中,我们将执行插入数据操作。在执行此操作之前,首先,我们必须创建一个新的PHP脚本,以便将新数据添加到SQL数据库中的该数据库中

先决条件:您应该在系统中安装Postman来测试此PHP脚本。

创建一个新的PHP脚本以在SQL数据库中向该数据库添加新数据

我们将构建一个简单的PHP脚本,用于将数据添加到我们在上一篇文章中创建的SQL表中。使用此脚本,我们将数据添加到我们的SQL表中。

分步实施

步骤1:启动您的XAMPP服务器,我们在上一篇文章中已经看到

在上一篇文章中,我们已经看到启动XAMPP服务器,并且还创建了数据库。在本文中,我们将创建一个脚本,用于将数据添加到数据库中。

步骤2:浏览至xampp资料夹

现在,我们必须导航到您PC中的C驱动器,并在其中检查文件夹名称是否为xampp。在该文件夹内,导航到htdocs文件夹并在其中创建一个新文件夹,并将其命名为courseApp。在此文件夹中,我们将存储所有PHP脚本。现在,您可以使用任何简单的文本编辑器来编写PHP脚本。我正在使用VS代码。创建此文件夹后,我们只需要用VS代码打开此文件夹。

步骤3:建立新的PHP档案

用VS代码打开文件夹后,在该文件夹内,我们必须按快捷键,因为Ctrl + N将创建新文件。我们必须使用名称addCourses保存该文件。 PHP并添加以下代码。在代码中添加了注释,以便更详细地了解。

PHP
prepare("INSERT INTO `courseDb`(`courseName`, `courseDuration`, `courseDescription`) VALUES (?,?,?)");
     $stmt->bind_param("sss",$courseName,$courseDuration,$courseDescription);
   // on below line we are checking if our sql query is executed succesfully.
   if($stmt->execute() == TRUE){
        // if the script is executed succesfully we are 
        // passing data to our response object
        // with a success message.
         $response['error'] = false;
         $response['message'] = "course created successfully!";
     } else{
         // if we get any error we are passing error to our object.
         $response['error'] = true;
         $response['message'] = "failed\n ".$conn->error;
     }
 } else{
     // this msethod is called when user
     // donot enter sufficient parameters. 
     $response['error'] = true;
     $response['message'] = "Insufficient parameters";
 }
 // at last we are prinintg our response which we get. 
 echo json_encode($response);
 ?>


XML


XML


  
    
    
  
    
    
  
    
    
  
    
    


Java
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
  
import androidx.appcompat.app.AppCompatActivity;
  
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
  
import org.json.JSONException;
import org.json.JSONObject;
  
import java.util.HashMap;
import java.util.Map;
  
public class MainActivity extends AppCompatActivity {
      
    // creating variables for our edit text
    private EditText courseNameEdt, courseDurationEdt, courseDescriptionEdt;
     
    // creating variable for button
    private Button submitCourseBtn;
      
    // creating a strings for storing our values from edittext fields.
    private String courseName, courseDuration, courseDescription;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
          
        // initializing our edittext and buttons
        courseNameEdt = findViewById(R.id.idEdtCourseName);
        courseDescriptionEdt = findViewById(R.id.idEdtCourseDescription);
        courseDurationEdt = findViewById(R.id.idEdtCourseDuration);
        submitCourseBtn = findViewById(R.id.idBtnSubmitCourse);
        submitCourseBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                  
                // getting data from edittext fields.
                courseName = courseNameEdt.getText().toString();
                courseDescription = courseDescriptionEdt.getText().toString();
                courseDuration = courseDurationEdt.getText().toString();
  
                // validating the text fields if empty or not.
                if (TextUtils.isEmpty(courseName)) {
                    courseNameEdt.setError("Please enter Course Name");
                } else if (TextUtils.isEmpty(courseDescription)) {
                    courseDescriptionEdt.setError("Please enter Course Description");
                } else if (TextUtils.isEmpty(courseDuration)) {
                    courseDurationEdt.setError("Please enter Course Duration");
                } else {
                    // calling method to add data to Firebase Firestore.
                    addDataToDatabase(courseName, courseDescription, courseDuration);
                }
            }
        });
    }
  
    private void addDataToDatabase(String courseName, String courseDescription, String courseDuration) {
          
        // url to post our data
        String url = "http://localhost/courseApp/addCourses.php";
          
        // creating a new variable for our request queue
        RequestQueue queue = Volley.newRequestQueue(MainActivity.this);
          
        // on below line we are calling a string 
        // request method to post the data to our API
        // in this we are calling a post method.
        StringRequest request = new StringRequest(Request.Method.POST, url, new com.android.volley.Response.Listener() {
            @Override
            public void onResponse(String response) {
                Log.e("TAG", "RESPONSE IS " + response);
                try {
                    JSONObject jsonObject = new JSONObject(response);
                    // on below line we are displaying a success toast message.
                    Toast.makeText(MainActivity.this, jsonObject.getString("message"), Toast.LENGTH_SHORT).show();
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                // and setting data to edit text as empty
                courseNameEdt.setText("");
                courseDescriptionEdt.setText("");
                courseDurationEdt.setText("");
            }
        }, new com.android.volley.Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                // method to handle errors.
                Toast.makeText(MainActivity.this, "Fail to get response = " + error, Toast.LENGTH_SHORT).show();
            }
        }) {
            @Override
            public String getBodyContentType() {
                // as we are passing data in the form of url encoded 
                // so we are passing the content type below
                return "application/x-www-form-urlencoded; charset=UTF-8";
            }
  
            @Override
            protected Map getParams() {
                  
                // below line we are creating a map for storing
                // our values in key and value pair.
                Map params = new HashMap();
                  
                // on below line we are passing our
                // key and value pair to our parameters.
                params.put("courseName", courseName);
                params.put("courseDuration", courseDuration);
                params.put("courseDescription", courseDescription);
                  
                // at last we are returning our params.
                return params;
            }
        };
        // below line is to make 
        // a json object request.
        queue.add(request);
    }
}


步骤4:获取我们的PHP脚本的URL

为了获取我们的PHP脚本的URL,我们只需要在浏览器中键入localhost,然后将其附加我们的文件夹名称和文件名即可。您将看到以下突出显示的URL:

http://localhost/courseApp/addCourses.php

现在,我们将在邮递员中使用此URL在SQL表中添加数据。

步骤5:在Postman中测试我们的PHP脚本

为了测试您的PHP脚本,请选择postman中的POST方法,因为我们会将数据发布到我们的SQL表中,并在URL部分内添加上述URL。添加URL之后。现在,单击下面的屏幕快照中所示的“正文”选项卡,并在其中选择x-www-form-urlencoded,然后在下面的部分中添加参数,如屏幕快照所示。确保您输入的键必须与用于在SQL表中命名列的键相同。添加完所有数据之后。现在,单击“发送”选项以将数据发送到我们的SQL表。

发送此请求后,我们的数据已添加到我们的SQL表中。您可以在下面的屏幕快照中查看在PhpMyAdmin控制台中添加的数据。

插入数据操作

在上半部分,我们创建了一个PHP脚本,用于将数据添加到SQL表中。除此之外,我们还通过向脚本中添加数据来测试了该脚本。在这一部分中,我们将把它集成到我们的Android应用程序中,并将数据从我们的Android应用程序添加到我们的SQL表中。

我们将在本文中构建什么?

我们将构建一个简单的应用程序,在该应用程序中,我们将简单地从一个简单的表单中将课程详细信息添加到我们创建的SQL表中。为了执行此操作,我们将使用Volley库,该库用于Android中的JSON解析。下面是视频,我们将在其中观看我们将要构建的内容。

分步实施

步骤1:创建一个新项目

要在Android Studio中创建新项目,请参阅如何在Android Studio中创建/启动新项目。请注意,选择Java作为编程语言。

步骤2:在您的build.gradle文件中添加以下依赖项

以下是Volley的依赖关系,我们将使用它们来从API获取数据。要添加此依赖关系,请导航至应用程序> Gradle脚本> build.gradle(app),然后在“依赖关系”部分添加以下依赖关系。

implementation ‘com.android.volley:volley:1.1.1’

添加此依赖项后,同步您的项目,现在移至AndroidManifest.xml部分。

步骤3:在AndroidManifest.xml文件中向Internet添加权限

导航至应用程序> AndroidManifest.xml,然后将以下代码添加到其中。

XML格式



步骤4:使用activity_main.xml文件

导航到应用程序> res>布局> activity_main.xml,然后将以下代码添加到该文件中。以下是activity_main.xml文件的代码。

XML格式



  
    
    
  
    
    
  
    
    
  
    
    

步骤5:使用MainActivity。 Java文件

转到MainActivity。 Java文件并参考以下代码。下面是MainActivity的代码。 Java文件。在代码内部添加了注释,以更详细地了解代码。

Java

import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
  
import androidx.appcompat.app.AppCompatActivity;
  
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
  
import org.json.JSONException;
import org.json.JSONObject;
  
import java.util.HashMap;
import java.util.Map;
  
public class MainActivity extends AppCompatActivity {
      
    // creating variables for our edit text
    private EditText courseNameEdt, courseDurationEdt, courseDescriptionEdt;
     
    // creating variable for button
    private Button submitCourseBtn;
      
    // creating a strings for storing our values from edittext fields.
    private String courseName, courseDuration, courseDescription;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
          
        // initializing our edittext and buttons
        courseNameEdt = findViewById(R.id.idEdtCourseName);
        courseDescriptionEdt = findViewById(R.id.idEdtCourseDescription);
        courseDurationEdt = findViewById(R.id.idEdtCourseDuration);
        submitCourseBtn = findViewById(R.id.idBtnSubmitCourse);
        submitCourseBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                  
                // getting data from edittext fields.
                courseName = courseNameEdt.getText().toString();
                courseDescription = courseDescriptionEdt.getText().toString();
                courseDuration = courseDurationEdt.getText().toString();
  
                // validating the text fields if empty or not.
                if (TextUtils.isEmpty(courseName)) {
                    courseNameEdt.setError("Please enter Course Name");
                } else if (TextUtils.isEmpty(courseDescription)) {
                    courseDescriptionEdt.setError("Please enter Course Description");
                } else if (TextUtils.isEmpty(courseDuration)) {
                    courseDurationEdt.setError("Please enter Course Duration");
                } else {
                    // calling method to add data to Firebase Firestore.
                    addDataToDatabase(courseName, courseDescription, courseDuration);
                }
            }
        });
    }
  
    private void addDataToDatabase(String courseName, String courseDescription, String courseDuration) {
          
        // url to post our data
        String url = "http://localhost/courseApp/addCourses.php";
          
        // creating a new variable for our request queue
        RequestQueue queue = Volley.newRequestQueue(MainActivity.this);
          
        // on below line we are calling a string 
        // request method to post the data to our API
        // in this we are calling a post method.
        StringRequest request = new StringRequest(Request.Method.POST, url, new com.android.volley.Response.Listener() {
            @Override
            public void onResponse(String response) {
                Log.e("TAG", "RESPONSE IS " + response);
                try {
                    JSONObject jsonObject = new JSONObject(response);
                    // on below line we are displaying a success toast message.
                    Toast.makeText(MainActivity.this, jsonObject.getString("message"), Toast.LENGTH_SHORT).show();
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                // and setting data to edit text as empty
                courseNameEdt.setText("");
                courseDescriptionEdt.setText("");
                courseDurationEdt.setText("");
            }
        }, new com.android.volley.Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                // method to handle errors.
                Toast.makeText(MainActivity.this, "Fail to get response = " + error, Toast.LENGTH_SHORT).show();
            }
        }) {
            @Override
            public String getBodyContentType() {
                // as we are passing data in the form of url encoded 
                // so we are passing the content type below
                return "application/x-www-form-urlencoded; charset=UTF-8";
            }
  
            @Override
            protected Map getParams() {
                  
                // below line we are creating a map for storing
                // our values in key and value pair.
                Map params = new HashMap();
                  
                // on below line we are passing our
                // key and value pair to our parameters.
                params.put("courseName", courseName);
                params.put("courseDuration", courseDuration);
                params.put("courseDescription", courseDescription);
                  
                // at last we are returning our params.
                return params;
            }
        };
        // below line is to make 
        // a json object request.
        queue.add(request);
    }
}

现在运行您的应用程序,然后查看代码输出。

输出

您可以在下面的屏幕快照中查看已添加到SQL表中的数据。