MYSQL được sử dụng như một cơ sở dữ liệu tại máy chủ web và PHP được sử dụng để lấy dữ liệu từ cơ sở dữ liệu. Ứng dụng của chúng ta sẽ giao tiếp 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ả về kết quả cho chúng ta.
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. Câu lệnh CREATE DATABASE tạo cơ sở dữ liệu.
Link đăng ký khóa học : Học lập trình Android cơ bản.
Phương thức đầ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 chuyển vào url và bản ghi được tìm nạp. Cú pháp của nó được đưa ra dưới đây
Android - Kết nối MYSQL
Các trang php đã được đưa ra dưới đây có tham số bằng phương pháp bài.
Để thử nghiệm với ví dụ này, bạn cần chạy trên thiết bị thực tế mà internet wifi được kết nối.
Đây là nội dung của src / com.example.phpmysql / MainActivity.java .
Để 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 Chạy biểu tượng 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ị màn hình sau đây
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 gõ admin là tên người dùng và mật khẩu. Nó được thể hiện trong hình
Bây giờ nhấn nút Get và chờ 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à ROLE được tìm nạp trong trường hợp quản trị là tên người dùng và mật khẩu. Nó được thể hiện 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 thể hiện trong hình bên dưới
<?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
Một khi cơ sở dữ liệu được tạo, thời gian của nó để tạo ra một số bảng trong cơ sở dữ liệu. Câu lệnh CREATE TABLE tạo cơ sở dữ liệu.<?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 giá trị vào bảng
Khi cơ sở dữ liệu và bảng được tạo ra. Bây giờ là lúc để chèn một số dữ liệu vào các bảng. Câu lệnh Insert Into tạo cơ sở dữ liệu.<?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 - phương thức GET và POST
PHP cũng được sử dụng để lấy bản ghi từ cơ sở dữ liệu mysql khi nó được tạo ra. Để 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 cần tìm nạp.Phương thức đầ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 chuyển vào url và bản ghi được tìm nạp. Cú pháp của nó được đưa ra dưới đây
<?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 POST. Thay đổi duy nhất trong kịch bản trên là thay thế $ _GET bằng $ _POST . Trong phương thức Post, các biến không được truyền qua URL.
Android - Kết nối MYSQL
Kết nối Via Get Method
Có hai cách để kết nối với MYSQL thông qua trang PHP. Phương thức đầu tiên được gọi là Nhận phương thức . Chúng ta sẽ sử dụng lớp HttpGet và HttpClient để kết nối. Cú pháp của họ được đưa ra dưới đâyURL 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 execute của lớp HttpClient và nhận nó trong một đối tượng HttpResponse. Sau đó, bạn cần mở luồng để nhận dữ liệu.
HttpResponse response = client.execute(request); BufferedReader in = new BufferedReader (new InputStreamReader(response.getEntity().getContent()));
Kết nối qua phương thức đăng bài
Trong phương thức Post, lớp URLEncoder , URLConnection sẽ được sử dụng. Các urlencoder sẽ mã hóa thông tin của các biến đi qua. Cú pháp của nó được đưa ra dưới đâyURL 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à ghi 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()));Ví dụ dưới đây là một ví dụ hoàn chỉnh về 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 với tên temp đã được tạo ra tại 000webhost.com. Trong cơ sở dữ liệu đó, một bảng đã được tạo ra với tên của table1. Bảng này có ba trường. (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ị", "quản trị viên", "quản trị viên").Các trang php đã được đưa ra dưới đây có tham số bằng phương pháp bài.
<?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ới ví dụ này, bạn cần chạy trên thiết bị thực tế mà internet wifi được kết nối.
| Các bước | Sự miêu tả |
|---|---|
| 1 | Bạn sẽ sử dụng Android studio IDE để tạo một ứng dụng Android và đặt tên nó là PHPMYSQL theo một 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 tệp XML bố trí res / layout / activity_main.xml thêm bất kỳ thành phần GUI nào nếu cần. |
| 5 | Sửa đổi tệp res / values / 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 một thiết bị Android đang chạy và cài đặt ứng dụng trên đó và xác minh kết quả. |
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); } }Đây là nội dung của src / com.example.phpmysql / SigninActivity.java .
package com.example.phpmysql; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.URI; import java.net.URL; import java.net.URLConnection; import java.net.URLEncoder; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import android.content.Context; import android.os.AsyncTask; import android.widget.TextView; public class SigninActivity extends AsyncTaskThêm nội dung sau vào build.gradle và xây dựng lại toàn bộ dự án.{ private TextView statusField,roleField; private Context context; private int byGetOrPost = 0; //flag 0 means get and 1 means post.(By default it is get.) public SigninActivity(Context context,TextView statusField,TextView roleField,int flag) { this.context = context; this.statusField = statusField; this.roleField = roleField; byGetOrPost = flag; } protected void onPreExecute(){ } @Override protected String doInBackground(String... arg0) { if(byGetOrPost == 0){ //means by Get Method try{ String username = (String)arg0[0]; String password = (String)arg0[1]; String link = "http://myphpmysqlweb.hostei.com/login.php?username="+username+"& password="+password; URL url = new URL(link); HttpClient client = new DefaultHttpClient(); HttpGet request = new HttpGet(); request.setURI(new URI(link)); HttpResponse response = client.execute(request); BufferedReader in = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); StringBuffer sb = new StringBuffer(""); String line=""; while ((line = in.readLine()) != null) { sb.append(line); break; } in.close(); return sb.toString(); } catch(Exception e){ return new String("Exception: " + e.getMessage()); } } else{ try{ String username = (String)arg0[0]; String password = (String)arg0[1]; String link="http://myphpmysqlweb.hostei.com/loginpost.php"; String data = URLEncoder.encode("username", "UTF-8") + "=" + URLEncoder.encode(username, "UTF-8"); data += "&" + URLEncoder.encode("password", "UTF-8") + "=" + URLEncoder.encode(password, "UTF-8"); URL url = new URL(link); URLConnection conn = url.openConnection(); conn.setDoOutput(true); OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); wr.write( data ); wr.flush(); BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); StringBuilder sb = new StringBuilder(); String line = null; // Read Server Response while((line = reader.readLine()) != null) { sb.append(line); break; } return sb.toString(); } catch(Exception e){ return new String("Exception: " + e.getMessage()); } } } @Override protected void onPostExecute(String result){ this.statusField.setText("Login Successful"); this.roleField.setText(result); } }
android { useLibrary 'org.apache.http.legacy' }Đây là nội dung của activity_main.xml .
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <EditText android:id="@+id/editText2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignRight="@+id/editText1" android:layout_below="@+id/editText1" android:layout_marginTop="25dp" android:ems="10" android:inputType="textPassword" > </EditText> <EditText android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:layout_marginTop="44dp" android:ems="10" > <requestFocus android:layout_width="wrap_content" /> </EditText> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/editText1" android:layout_alignParentLeft="true" android:text="@string/Username" /> <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:text="@string/App" android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:id="@+id/textView7" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/textView5" android:layout_alignLeft="@+id/textView6" android:text="@string/Role" android:textAppearance="?android:attr/textAppearanceMedium" android:textSize="10sp" /> <TextView android:id="@+id/textView5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/textView6" android:layout_marginTop="27dp" android:layout_toLeftOf="@+id/editText1" android:text="@string/LoginRole" /> <TextView android:id="@+id/textView8" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/textView6" android:layout_alignLeft="@+id/textView5" android:layout_marginBottom="27dp" android:text="@string/method" /> <TextView android:id="@+id/textView4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView8" android:layout_below="@+id/button1" android:layout_marginTop="86dp" android:text="@string/LoginStatus" /> <TextView android:id="@+id/textView6" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@+id/textView4" android:layout_centerHorizontal="true" android:text="@string/Status" android:textAppearance="?android:attr/textAppearanceMedium" android:textSize="10sp" /> <TextView android:id="@+id/textView9" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/textView8" android:layout_alignLeft="@+id/textView6" android:text="@string/Choose" android:textAppearance="?android:attr/textAppearanceMedium" android:textSize="10sp" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_toRightOf="@+id/textView6" android:onClick="loginPost" android:text="@string/LoginPost" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/button2" android:layout_alignBottom="@+id/button2" android:layout_alignLeft="@+id/textView2" android:onClick="login" android:text="@string/LoginGet" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/editText2" android:layout_alignBottom="@+id/editText2" android:layout_alignParentLeft="true" android:text="@string/Password" /> </RelativeLayout>Đây là nội dung của Strings.xml .
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">PHPMYSQL</string> <string name="action_settings">Settings</string> <string name="hello_world">Hello world!</string> <string name="Username">Username</string> <string name="Password">Password</string> <string name="LoginGet">Login - Get</string> <string name="LoginPost">Login - Post</string> <string name="App">Login Application</string> <string name="LoginStatus">Login Status</string> <string name="LoginRole">Login Role</string> <string name="Status">Not login</string> <string name="Role">Not assigned</string> <string name="method">Login Method</string> <string name="Choose">Choose Method</string> </resources>Đây là nội dung của AndroidManifest.xml .
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.phpmysql" > <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.phpmysql.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>Hã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ị Android Mobile thực tế với máy tính của mình.
Để 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 Chạy biểu tượng 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.
![]() |
| Học lập trình Android cơ bản |
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ị màn hình sau đây
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 gõ admin là tên người dùng và mật khẩu. Nó được thể hiện trong hình
Bây giờ nhấn nút Get và chờ 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à ROLE được tìm nạp trong trường hợp quản trị là tên người dùng và mật khẩu. Nó được thể hiện 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 thể hiện trong hình bên dưới

Không có nhận xét nào:
Đăng nhận xét