Trong chương này, chúng tôi sẽ giải thích, làm thế nào bạn có thể tích hợp PHP và MySQL với ứng dụng Android của bạn. Điều này rất hữu ích trong trường hợp bạn có máy chủ web và bạn muốn truy cập dữ liệu của nó trên ứng dụng Android của mình.
MySQL được sử dụng làm cơ sở dữ liệu tại WebServer và PHP được sử dụng để tìm nạp dữ liệu từ cơ sở dữ liệu. Ứng dụng của chúng tôi sẽ liên lạc với trang PHP với các tham số cần thiết và PHP sẽ liên hệ với cơ sở dữ liệu MySQL và sẽ lấy kết quả và trả lại kết quả cho chúng tôi.
PHP - MySQL
Tạo cơ sở dữ liệu
Cơ sở dữ liệu MySQL có thể được tạo dễ dàng bằng cách sử dụng tập lệnh đơn giản này. Tuyên bố tạo cơ sở dữ liệu tạo cơ sở dữ liệu.CREATE DATABASE statement creates the database.
<?php $con=mysqli_connect("example.com","username","password"); $sql="CREATE DATABASE my_db"; if (mysqli_query($con,$sql)) { echo "Database my_db created successfully"; } ?>Tạo bảng
Khi cơ sở dữ liệu được tạo, thời gian của nó để tạo một số bảng trong cơ sở dữ liệu. Câu lệnh CREATE TABLE tạo cơ sở dữ liệu.CREATE TABLE statement creates the database.
<?php $con=mysqli_connect("example.com","username","password","my_db"); $sql="CREATE TABLE table1(Username CHAR(30),Password CHAR(30),Role CHAR(30))"; if (mysqli_query($con,$sql)) { echo "Table have been created successfully"; } ?>Chèn các giá trị vào bảng
Khi cơ sở dữ liệu và bảng được tạo. Bây giờ là lúc để chèn một số dữ liệu vào các bảng. Việc chèn vào câu lệnh tạo cơ sở dữ liệu.Insert Into statement creates the database.
<?php $con=mysqli_connect("example.com","username","password","my_db"); $sql="INSERT INTO table1 (FirstName, LastName, Age) VALUES ('admin', 'admin','adminstrator')"; if (mysqli_query($con,$sql)) { echo "Values have been inserted successfully"; } ?>PHP - Nhận và đăng phương thức
PHP cũng được sử dụng để tìm nạp bản ghi từ cơ sở dữ liệu MySQL sau khi nó được tạo. Để tìm nạp bản ghi một số thông tin phải được chuyển đến trang PHP liên quan đến bản ghi nào sẽ được tìm nạp.
Phương pháp đầu tiên để truyền thông tin là thông qua phương thức GET trong đó lệnh $ _GET được sử dụng. Các biến được truyền trong URL và bản ghi được tìm nạp. Cú pháp của nó được đưa ra dưới đây -$_GET command is used. The variables are passed in the url and the record is fetched. Its syntax is given below −
<?php $con=mysqli_connect("example.com","username","password","database name"); if (mysqli_connect_errno($con)) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } $username = $_GET['username']; $password = $_GET['password']; $result = mysqli_query($con,"SELECT Role FROM table1 where Username='$username' and Password='$password'"); $row = mysqli_fetch_array($result); $data = $row[0]; if($data){ echo $data; } mysqli_close($con); ?>Phương pháp thứ hai là sử dụng phương thức bài. Thay đổi duy nhất trong tập lệnh trên là thay thế $ _get bằng $ _POST. Trong phương pháp bài, các biến không được truyền qua URL.$_POST. In Post method, the variables are not passed through URL.
Android - Kết nối MySQL
Kết nối qua phương thức Get
Có hai cách để kết nối với MySQL qua trang PHP. Cái đầu tiên được gọi là phương thức Get. Chúng tôi sẽ sử dụng lớp httpget và httpclient để kết nối. Cú pháp của họ được đưa ra dưới đây -Get method. We will use HttpGet and HttpClient class to connect. Their syntax is given below −
URL url = new URL(link); HttpClient client = new DefaultHttpClient(); HttpGet request = new HttpGet(); request.setURI(new URI(link));Sau đó, bạn cần gọi phương thức thực thi của lớp httpclient và nhận nó trong một đối tượng httpresponse. Sau đó, bạn cần mở các luồng để nhận dữ liệu.execute method of HttpClient class and receive it in a HttpResponse object. After that you need to open streams to receive the data.
HttpResponse response = client.execute(request); BufferedReader in = new BufferedReader (new InputStreamReader(response.getEntity().getContent()));Kết nối qua phương thức bài
Trong phương thức POST, lớp urlencoder, urlconnection sẽ được sử dụng. URLENCODER sẽ mã hóa thông tin của các biến số. Đó là cú pháp được đưa ra dưới đây -URLEncoder,URLConnection class will be used. The urlencoder will encode the information of the passing variables. It's syntax is given below −
URL url = new URL(link); String data = URLEncoder.encode("username", "UTF-8") + "=" + URLEncoder.encode(username, "UTF-8"); data += "&" + URLEncoder.encode("password", "UTF-8") + "=" + URLEncoder.encode(password, "UTF-8"); URLConnection conn = url.openConnection();Điều cuối cùng bạn cần làm là viết dữ liệu này vào liên kết. Sau khi viết, bạn cần mở luồng để nhận dữ liệu đã trả lời.
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); wr.write( data ); BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));Thí dụ
Ví dụ dưới đây là một ví dụ hoàn chỉnh về việc kết nối ứng dụng Android của bạn với cơ sở dữ liệu MySQL thông qua trang PHP. Nó tạo ra một ứng dụng cơ bản cho phép bạn đăng nhập bằng phương thức GET và POST.
PHP - Phần MySQL
Trong ví dụ này, một cơ sở dữ liệu có tên của TEMP đã được tạo tại 000WebHost.com. Trong cơ sở dữ liệu đó, một bảng đã được tạo với tên của Bảng1. Bảng này có ba lĩnh vực. (Tên người dùng, mật khẩu, vai trò). Bảng chỉ có một bản ghi là ("Quản trị viên", "Quản trị viên", "Quản trị viên").
Trang PHP đã được đưa ra dưới đây có các tham số theo phương thức POST.
<?php $con=mysqli_connect("mysql10.000webhost.com","username","password","db_name"); if (mysqli_connect_errno($con)) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } $username = $_POST['username']; $password = $_POST['password']; $result = mysqli_query($con,"SELECT Role FROM table1 where Username='$username' and Password='$password'"); $row = mysqli_fetch_array($result); $data = $row[0]; if($data){ echo $data; } mysqli_close($con); ?>Phần Android
Để thử nghiệm ví dụ này, bạn cần chạy điều này trên một thiết bị thực tế trên đó internet wifi được kết nối.
1 | Bạn sẽ sử dụng Android Studio IDE để tạo một ứng dụng Android và đặt tên cho nó là PHPMysQL theo gói com.example.phpmysql. |
2 | Sửa đổi tệp src/mainactivity.java để thêm mã hoạt động. |
3 | Tạo tệp src/siginactivity.java để thêm mã PHPMysQL. |
4 | Sửa đổi Layout Tệp XML Res/Layout/Activity_Main.xml Thêm bất kỳ thành phần GUI nào nếu được yêu cầu. |
5 | Sửa đổi tệp res/value/string.xml và thêm các thành phần chuỗi cần thiết. |
6 | Sửa đổi AndroidManifest.xml để thêm các quyền cần thiết. |
7 | Chạy ứng dụng và chọn thiết bị Android đang chạy và cài đặt ứng dụng trên đó và xác minh kết quả. |
Dưới đây là nội dung của src/com.example.phpmysql/mainactivity.java.src/com.example.phpmysql/MainActivity.java.
package com.example.phpmysql; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.EditText; import android.widget.TextView; public class MainActivity extends Activity { private EditText usernameField,passwordField; private TextView status,role,method; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); usernameField = (EditText)findViewById(R.id.editText1); passwordField = (EditText)findViewById(R.id.editText2); status = (TextView)findViewById(R.id.textView6); role = (TextView)findViewById(R.id.textView7); method = (TextView)findViewById(R.id.textView9); } public void login(View view){ String username = usernameField.getText().toString(); String password = passwordField.getText().toString(); method.setText("Get Method"); new SigninActivity(this,status,role,0).execute(username,password); } public void loginPost(View view){ String username = usernameField.getText().toString(); String password = passwordField.getText().toString(); method.setText("Post Method"); new SigninActivity(this,status,role,1).execute(username,password); } }Dưới đây là nội dung của src/com.example.phpmysql/signinactivity.java.src/com.example.phpmysql/SigninActivity.java.
<?php $con=mysqli_connect("example.com","username","password","my_db"); $sql="CREATE TABLE table1(Username CHAR(30),Password CHAR(30),Role CHAR(30))"; if (mysqli_query($con,$sql)) { echo "Table have been created successfully"; } ?> 0Thêm nội dung sau để xây dựng.gradle và xây dựng lại toàn bộ dự án.build.gradle and rebuild the whole project.
<?php $con=mysqli_connect("example.com","username","password","my_db"); $sql="CREATE TABLE table1(Username CHAR(30),Password CHAR(30),Role CHAR(30))"; if (mysqli_query($con,$sql)) { echo "Table have been created successfully"; } ?> 1Đây là nội dung của Activity_Main.xml.activity_main.xml.
<?php $con=mysqli_connect("example.com","username","password","my_db"); $sql="CREATE TABLE table1(Username CHAR(30),Password CHAR(30),Role CHAR(30))"; if (mysqli_query($con,$sql)) { echo "Table have been created successfully"; } ?> 2Đây là nội dung của chuỗi.xml.Strings.xml.
<?php $con=mysqli_connect("example.com","username","password","my_db"); $sql="CREATE TABLE table1(Username CHAR(30),Password CHAR(30),Role CHAR(30))"; if (mysqli_query($con,$sql)) { echo "Table have been created successfully"; } ?> 3Đây là nội dung của AndroidManifest.xml.AndroidManifest.xml.
<?php $con=mysqli_connect("example.com","username","password","my_db"); $sql="CREATE TABLE table1(Username CHAR(30),Password CHAR(30),Role CHAR(30))"; if (mysqli_query($con,$sql)) { echo "Table have been created successfully"; } ?> 4Hãy thử chạy ứng dụng PHPMysQL của bạn. Tôi cho rằng bạn đã kết nối thiết bị di động Android thực tế của bạn với máy tính của bạn. Để chạy ứng dụng từ Android Studio, hãy mở một trong các tệp hoạt động của dự án của bạn và nhấp vào biểu tượng chạy từ thanh công cụ. Trước khi bắt đầu ứng dụng của bạn, Android Studio sẽ hiển thị cửa sổ sau để chọn tùy chọn mà bạn muốn chạy ứng dụng Android của mình.
Chọn thiết bị di động của bạn làm tùy chọn và sau đó kiểm tra thiết bị di động của bạn sẽ hiển thị sau màn hình -
Bây giờ chỉ cần nhập tên người dùng và mật khẩu của bạn. Trong trường hợp của tôi, tôi đang gõ quản trị viên làm tên người dùng và mật khẩu. Nó được hiển thị trong hình -
Bây giờ nhấn nút GET và đợi một vài giây và phản hồi sẽ được tải xuống và sẽ được hiển thị cho bạn. Trong trường hợp này, phản hồi là vai trò được tìm nạp trong trường hợp quản trị viên là tên người dùng và mật khẩu. Nó được hiển thị trong hình bên dưới -
Bây giờ một lần nữa nhấn nút Post và kết quả tương tự sẽ xuất hiện. Nó được hiển thị trong hình dưới đây -