在 MySQL 中使用 PHP 进行 CRUD 操作,凌空安卓–读取数据
原文:https://www . geesforgeks . org/crud-operation-in-MySQL-using-PHP-凌空-android-read-data/
在前一篇文章中,我们已经执行了插入数据操作。在本文中,我们将执行读取数据操作。在执行这个操作之前,首先我们必须创建一个新的 PHP 脚本来从 SQL 数据库中读取数据。
先决条件:您应该已经在系统中安装了邮递员来测试这个 PHP 脚本。
创建一个从我的 SQL 数据库中读取数据的 PHP 脚本
我们将构建一个简单的 PHP 脚本,用于从我们在上一篇文章中创建的 SQL 表中读取数据。使用这个脚本,我们将从我们的 SQL 表中读取数据。
分步实施
第 1 步:启动您的 XAMPP 服务器,我们在上一篇文章中已经看到了它的启动
在上一篇文章中,我们已经看到启动我们的 XAMPP 服务器,我们还创建了我们的数据库。在本文中,我们将创建一个向数据库添加数据的脚本。
第二步:导航到 xampp 文件夹
现在我们必须导航到你的电脑中的 c 盘,并在里面检查文件夹名是否为 xampp。在该文件夹中,导航到 htdocs 文件夹,并在其中创建一个新文件夹,并将其命名为 courseApp。在这个文件夹中,我们将存储所有的 PHP 脚本。现在,为了编写 PHP 脚本,我们可以使用任何简单的文本编辑器。我用的是 VS 代码。创建这个文件夹后,我们只需要在 VS 代码中打开这个文件夹。
第三步:新建一个 PHP 文件
在你用 VS 代码打开你的文件夹之后,在那个文件夹里面我们必须按一个快捷键,因为 Ctrl+N 我们的新文件将被创建。我们必须保存这个名为readCourses.php的文件,并添加下面的代码。代码中添加了注释,以便更详细地了解。
服务器端编程语言(Professional Hypertext Preprocessor 的缩写)
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "id16310745_gfgdatabase";
// connect with database demo
$conn = new mysqli($servername, $username, $password, $dbname);
// an array to display response
$response = array();
// on below line we are checking if the parameter send is id or not.
if($_POST['id']){
// if the parameter send from the user id id then
// we will search the item for specific id.
$id = $_POST['id'];
//on below line we are selecting the course detail with below id.
$stmt = $conn->prepare("SELECT courseName,courseDescription,courseDuration FROM courseDb WHERE id = ?");
$stmt->bind_param("s",$id);
$result = $stmt->execute();
// on below line we are checking if our
// table is having data with specific id.
if($result == TRUE){
// if we get the response then we are displaying it below.
$response['error'] = false;
$response['message'] = "Retrieval Successful!";
// on below line we are getting our result.
$stmt->store_result();
// on below line we are passing parameters which we want to get.
$stmt->bind_result($courseName,$courseDescription,$courseDuration);
// on below line we are fetching the data.
$stmt->fetch();
// after getting all data we are passing this data in our array.
$response['courseName'] = $courseName;
$response['courseDescription'] = $courseDescription;
$response['courseDuration'] = $courseDuration;
} else{
// if the id entered by user donot exist then
// we are displaying the error message
$response['error'] = true;
$response['message'] = "Incorrect id";
}
} else{
// if the user donot adds any paramter while making request
// then we are displaying the error as insufficient parameters.
$response['error'] = true;
$response['message'] = "Insufficient Parameters";
}
// at last we are printing
// all the data on below line.
echo json_encode($response);
?>
第四步:获取 PHP 脚本的网址
为了获得 PHP 脚本的 URL,我们只需在浏览器中键入 localhost,然后将它附加到我们的文件夹名和文件名中。您将看到下面突出显示的网址:
http://localhost/courseApp/readCourses.php
现在我们将使用邮递员测试我们的应用编程接口。
第五步:在 Postman 中测试我们的 PHP 脚本
为了测试您的 PHP 脚本,请在 postman 中选择 POST 方法,因为我们将从我们的 SQL 表中获取数据,并在 URL 部分添加上面的 URL。添加网址后。现在点击下面截图中显示的 Body 选项卡,在里面选择 x-www-form-urlencoded,然后在下面的部分添加参数,如截图所示。请确保您输入的键必须与我们在 SQL 表中用于命名列的键相同。添加所有数据后。现在点击发送选项发送我们的 id 并从我们的 SQL 表接收数据。
您将在上面的屏幕上看到来自 API 的响应。
读取数据操作
在上面的部分,我们已经创建了一个从 SQL 表中读取数据的 PHP 脚本。在这一部分,我们将把它集成到我们的安卓应用程序中,并从我们的安卓应用程序中读取数据到我们的 SQL 表中。
本文我们要构建什么?
我们将构建一个简单的应用程序,通过传递标识从我们的 SQL 表中读取数据。我们将使用之前创建的 PHP 脚本来读取这些数据。下面是视频,我们将在其中看到我们将在本文中构建的内容。
[https://media.geeksforgeeks.org/wp-content/uploads/20210309194046/Screenrecorder-2021-03-09-19-39-47-859.mp4](https://media.geeksforgeeks.org/wp-content/uploads/20210309194046/Screenrecorder-2021-03-09-19-39-47-859.mp4)分步实施
第一步:创建新项目
要在安卓工作室创建新项目,请参考如何在安卓工作室创建/启动新项目。注意选择 Java 作为编程语言。
第二步:在你的 build.gradle 文件中添加下面的依赖项
下面是凌空的依赖,我们将使用它从应用编程接口获取数据。要添加此依赖项,请导航至应用程序>渐变脚本> build.gradle(应用程序),并在依赖项部分添加以下依赖项。
implementation ‘com.android.volley:volley:1.1.1’
添加此依赖项后,同步您的项目,现在转到 AndroidManifest.xml 部分。
第三步:在 AndroidManifest.xml 文件中添加互联网权限
导航到应用程序> AndroidManifest.xml ,并添加以下代码。
可扩展标记语言
<!--permissions for INTERNET-->
<uses-permission android:name="android.permission.INTERNET"/>
第 4 步:使用 activity_main.xml 文件
导航到应用程序> res >布局> activity_main.xml 并将下面的代码添加到该文件中。下面是 activity_main.xml 文件的代码。
可扩展标记语言
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<!--Edit text for getting course id-->
<EditText
android:id="@+id/idEdtCourseId"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="10dp"
android:hint="Enter Course Id"
android:importantForAutofill="no"
android:inputType="number" />
<!--Button for adding your course to Firebase-->
<Button
android:id="@+id/idBtnGetCourse"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="Get Course Details"
android:textAllCaps="false" />
<androidx.cardview.widget.CardView
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/idCVCOurseItem"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:visibility="gone"
app:cardCornerRadius="6dp"
app:cardElevation="4dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="2dp"
android:orientation="vertical"
android:padding="4dp">
<!--Textview for displaying our Course Name-->
<TextView
android:id="@+id/idTVCourseName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="2dp"
android:text="CourseName"
android:textColor="@color/purple_500"
android:textSize="18sp"
android:textStyle="bold" />
<!--Textview for displaying our Course Duration-->
<TextView
android:id="@+id/idTVCourseDuration"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="2dp"
android:text="Duration"
android:textColor="@color/black" />
<!--Textview for displaying our Course Description-->
<TextView
android:id="@+id/idTVCourseDescription"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="2dp"
android:text="Description"
android:textColor="@color/black" />
</LinearLayout>
</androidx.cardview.widget.CardView>
</LinearLayout>
第五步:使用MainActivity.java 文件
转到MainActivity.java文件,参考以下代码。以下是MainActivity.java文件的代码。代码中添加了注释,以更详细地理解代码。
Java 语言(一种计算机语言,尤用于创建网站)
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import androidx.cardview.widget.CardView;
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 courseIDEdt;
// creating variable for button
private Button getCourseDetailsBtn;
// creating variable for card view and text views.
private CardView courseCV;
private TextView courseNameTV, courseDescTV, courseDurationTV;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// initializing all our variables.
courseNameTV = findViewById(R.id.idTVCourseName);
courseDescTV = findViewById(R.id.idTVCourseDescription);
courseDurationTV = findViewById(R.id.idTVCourseDuration);
getCourseDetailsBtn = findViewById(R.id.idBtnGetCourse);
courseIDEdt = findViewById(R.id.idEdtCourseId);
courseCV = findViewById(R.id.idCVCOurseItem);
// adding click listener for our button.
getCourseDetailsBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// checking if the id text field is empty or not.
if (TextUtils.isEmpty(courseIDEdt.getText().toString())) {
Toast.makeText(MainActivity.this, "Please enter course id", Toast.LENGTH_SHORT).show();
return;
}
// calling method to load data.
getCourseDetails(courseIDEdt.getText().toString());
}
});
}
private void getCourseDetails(String courseId) {
// url to post our data
String url = "http://localhost/courseApp/readCourses.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<String>() {
@Override
public void onResponse(String response) {
try {
// on below line passing our response to json object.
JSONObject jsonObject = new JSONObject(response);
// on below line we are checking if the response is null or not.
if (jsonObject.getString("courseName") == null) {
// displaying a toast message if we get error
Toast.makeText(MainActivity.this, "Please enter valid id.", Toast.LENGTH_SHORT).show();
} else {
// if we get the data then we are setting it in our text views in below line.
courseNameTV.setText(jsonObject.getString("courseName"));
courseDescTV.setText(jsonObject.getString("courseDescription"));
courseDurationTV.setText(jsonObject.getString("courseDuration"));
courseCV.setVisibility(View.VISIBLE);
}
// on below line we are displaying
// a success toast message.
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new com.android.volley.Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// method to handle errors.
Toast.makeText(MainActivity.this, "Fail to get course" + 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<String, String> getParams() {
// below line we are creating a map for storing our values in key and value pair.
Map<String, String> params = new HashMap<String, String>();
// on below line we are passing our key and value pair to our parameters.
params.put("id", courseId);
// at last we are returning our params.
return params;
}
};
// below line is to make
// a json object request.
queue.add(request);
}
}
现在运行你的应用程序,看看代码的输出。
输出:
[https://media.geeksforgeeks.org/wp-content/uploads/20210309194046/Screenrecorder-2021-03-09-19-39-47-859.mp4](https://media.geeksforgeeks.org/wp-content/uploads/20210309194046/Screenrecorder-2021-03-09-19-39-47-859.mp4)版权属于:月萌API www.moonapi.com,转载请注明出处