Android PHP /MySQL Tutorial

I dette kapittelet skal vi forklare hvordan du kan integrere PHP og MySQL med din android søknad. Dette er svært nyttig i tilfelle du har en webserver, og du vil ha tilgang til sine data på din android søknad.

MySQL brukes som en database på webserver og PHP brukes til å hente data fra databasen. Vår søknad vil kommunisere med PHP side med nødvendige parametere og PHP vil kontakte MySQL database og vil hente resultatet og returnerer resultatene til oss

PHP -. MYSQL

Opprette Database
< p> MySQL database kan lages enkelt ved hjelp av denne enkle skript. CREATE DATABASE
uttalelsen skaper databasen
. ≪? Php $ con = mysqli_connect ( "example.com", "brukernavn", "passord"); $ sql = "CREATE DATABASE my_db"; if (mysqli_query ($ con, $ sql)) {echo "database my_db opprettet";} >
lage tabeller

Når databasen er opprettet, er det på tide å lage noen tabeller i databasen. CREATE TABLE
uttalelsen skaper databasen
. ≪? Php $ con = mysqli_connect ( "example.com", "brukernavn", "passord", "my_db"); $ sql = "CREATE TABELL Tabell1 (brukernavn CHAR (30), passord CHAR (30), rolle CHAR (30)) "; if (mysqli_query ($ con, $ sql)) {echo" Table har blitt opprettet ";}? >
Sette verdier i tabeller

Når databasen og tabeller er opprettet. Nå er det på tide å sette inn noen data i tabellene. Sett inn
uttalelsen skaper databasen
. ≪? Php $ con = mysqli_connect ( "example.com", "brukernavn", "passord", "my_db"); $ sql = "INSERT INTO Tabell1 (Fornavn, etternavn, alder) VALUES ( 'admin', 'admin', 'administrator') "; if (mysqli_query ($ con, $ sql)) {echo" verdier har blitt satt vellykket ";}? >
PHP - GET og pOST metoder

PHP er også brukt til å hente posten fra mysql databasen når den er opprettet. For å hente posten litt informasjon må sendes til PHP side om hva posten skal hentes.

Den første metoden for å sende informasjon gjennom GET metode der $ _ GET
kommandoen brukes. Variablene er vedtatt i url og posten er hentet. Syntaksen er gitt nedenfor −
<? Php $ con = mysqli_connect ( "example.com", "brukernavn", "passord", "databasenavn"); if (mysqli_connect_errno ($ con)) {echo " Kan ikke koble til MySQL: ". mysqli_connect_error ();} $ username = $ _GET [ 'brukernavn']; $ password = $ _GET [ 'passord']; $ resultat = mysqli_query ($ con, "SELECT rolle fra Tabell1 der brukernavn = '$ brukernavn' og Password = '$ passord' "); $ p = mysqli_fetch_array ($ resultat), $ data = $ rad [0]; if ($ data) {echo $ data;} mysqli_close ($ con); >

Den andre metode er å bruke POST-metoden. Den eneste endringen i skriptet ovenfor er å erstatte $ _GET med $ _ POST
. I Post metoden, er variablene ikke gått gjennom URL

Android -. Koble MYSQL

Tilkobling Via Få Metode

Det er to måter å koble til MySQL via PHP side. Den første heter Hent metode
. Vi vil bruke HttpGet Hotell og Httpclient
klasse å koble til. Deres syntaks er gitt nedenfor −
URL url = ny URL (link); Httpclient klient = new DefaultHttpClient (); HttpGet forespørsel = new HttpGet (); request.setURI (ny URI (link));

Etter at du trenger å ringe utføre
metode for Httpclient klassen og motta den i en HttpResponse objekt. Etter at du må åpne bekker for å motta dataene
HttpResponse svar = client.execute (forespørsel),. BufferedReader i = new BufferedReader (ny InputStreamReader (response.getEntity () getContent ()).);
Tilkobling via Post metode

i Post metoden, URLEncoder
, URLConnection
klasse vil bli brukt. Den urlencoder vil kode informasjonen fra de passerende variabler. Det er syntaksen er gitt nedenfor −
URL url = ny URL (link); String data = URLEncoder.encode ( "brukernavn", "UTF-8") + "=" + URLEncoder.encode (brukernavn, "UTF- 8 "); data + =" &"+ URLEncoder.encode (" passord "," UTF-8 ") +" = "+ URLEncoder.encode (passord," UTF-8 "); URLConnection conn = url.openConnection ( );

Det siste du trenger å gjøre er å skrive disse dataene til koblingen. Etter skriving, må du åpne strømmen for å motta de svarte data
OutputStreamWriter wr = new OutputStreamWriter (conn.getOutputStream ().); wr.write (data); BufferedReader leseren = new BufferedReader (ny InputStreamReader (conn.getInputStream ()));
Eksempel

Eksempelet nedenfor er en komplett eksempel på å koble din android søknad med MySQL database via PHP side. Det skaper en enkel applikasjon som lar deg logge inn med GET og POST-metoden

PHP -. MYSQL del

I dette eksempelet en database med navnet temp har blitt opprettet på 000webhost.com. I denne databasen har en tabell er opprettet med navnet Tabell1. Denne tabellen har tre felt. (Brukernavn, passord, Rolle). . Bordet har kun en rekord som er ( "admin", "admin", "administrator")

php siden er gitt nedenfor som tar parametere i posten metode
. ≪? Php $ con = mysqli_connect ( "mysql10.000webhost.com", "brukernavn", "passord", "db_name"); if (mysqli_connect_errno ($ con)) {echo "Kan ikke koble til MySQL:". mysqli_connect_error ();} $ username = $ _POST [ 'brukernavn']; $ password = $ _POST [ 'passord']; $ resultat = mysqli_query ($ con, "SELECT rolle fra Tabell1 der brukernavn = '$ brukernavn' og Password = '$ passord' "); $ p = mysqli_fetch_array ($ resultat), $ data = $ rad [0]; if ($ data) {echo $ data;} mysqli_close ($ con); >
Android Part

for å eksperimentere med dette eksempelet, må du kjøre dette på en faktisk enhet som wifi internett er koblet til.
StepsDescription1You vil bruke Android studio IDE for å lage en Android-applikasjon, og gi det et navn som PHPMYSQL under en pakke com.example.phpmysql. Mens du oppretter dette prosjektet, må du Target SDK og kompilere med på den nyeste versjonen av Android SDK for å bruke høyere nivåer av APIs.2Modify src /MainActivity.java fil for å legge til aktivitet code.3Create src /SiginActivity.java filen for å legge PHPMYSQL kode .4Modify layout XML-res /layout /activity_main.xml legge til GUI-komponent hvis required.5Modify res /verdier /string.xml fil og legge nødvendig streng components.6Modify AndroidManifest.xml å legge nødvendig permissions.7Run programmet og velge en løpende android-enhet og installere programmet på den og kontrollere resultatene

Her er innholdet i src /com.example.phpmysql /MainActivity.java
pakken com.example.phpmysql;.. import android.app.Activity, import android.os.Bundle, import android.view.Menu, import android.view.View, import android.widget.EditText, import android.widget.TextView; public class MainActivity strekker aktivitet {private EditText usernameField , passwordField; privat TextView status, rolle, metoden; Override Beskyttet 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); }Override Public boolean onCreateOptionsMenu (Meny menyen) {//Blås menyen; dette legger til elementer i handlingsfeltet hvis det er til stede. . GetMenuInflater () blåse (R.menu.main, menyen); return true; .} Public void innlogging (Vis visning) String brukernavn {= usernameField.getText () toString (); String passord = passwordField.getText () toString ().; method.setText ( "Get Method"); ny SigninActivity (dette, status, rolle, 0) .execute (brukernavn, passord); } Public void loginPost (Vis visning) {String brukernavn = usernameField.getText () toString ().; String passord = passwordField.getText () toString ().; method.setText ( "Post Method"); ny SigninActivity (dette, status, rolle, 1) .execute (brukernavn, passord); }}

Her er innholdet i src /com.example.phpmysql /SigninActivity.java
pakken 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 strekker AsyncTask < String, Void, String > {private TextView statusField, roleField; privat Kontekst sammenheng; private int byGetOrPost = 0; //Flagg 0 del få og 1 betyr innlegget (som standard det er få.) Offentlig SigninActivity (Context kontekst, TextView statusField, TextView roleField, int flagg) {this.context = sammenheng.; this.statusField = statusField; this.roleField = roleField; byGetOrPost = flagg; } Beskyttet void onPreExecute () {}Override beskyttet String doInBackground (String ... arg0) {if (byGetOrPost == 0) {//mener med Få Metode prøve {String brukernavn = (String) arg0 [0]; String passord = (String) arg0 [1]; String link = "http://myphpmysqlweb.hostei.com/login.php?username="+username+"&password =" + passord; URL url = ny URL (link); Httpclient klient = new DefaultHttpClient (); HttpGet request = ny HttpGet (); request.setURI (ny URI (link)); HttpResponse svar = client.execute (forespørsel); BufferedReader i = ny BufferedReader (ny InputStreamReader (response.getEntity () getContent ()).); Stringbuffer sb = new Stringbuffer ( ""); String linje = ""; while ((linje = in.readLine ()) = null) {sb.append (linje); gå i stykker; } In.close (); tilbake sb.toString (); } Catch (Exception e) {return new String ( "Unntak:" + e.getMessage ()); }} Else {try {String brukernavn = (String) arg0 [0]; String passord = (String) arg0 [1]; String link = "http://myphpmysqlweb.hostei.com/loginpost.php"; String data = URLEncoder.encode ( "brukernavn", "UTF-8") + "=" + URLEncoder.encode (brukernavn, "UTF-8"); data + = "&" + URLEncoder.encode ( "passord", "UTF-8") + "=" + URLEncoder.encode (passord, "UTF-8"); URL url = ny URL (link); URLConnection conn = url.openConnection (); conn.setDoOutput (true); OutputStreamWriter wr = ny OutputStreamWriter (conn.getOutputStream ()); wr.write (data); wr.flush (); BufferedReader leseren = new BufferedReader (ny InputStreamReader (conn.getInputStream ())); Stringbuilder sb = new Stringbuilder (); String linje = null; //Les Server Response while ((linje = reader.readLine ()) = null) {sb.append (linje); gå i stykker; } Returnere sb.toString (); } Catch (Exception e) {return new String ( "Unntak:" + e.getMessage ()); }}}Override Beskyttet void onPostExecute (String resultat) {this.statusField.setText ( "Logg Vellykket"); this.roleField.setText (resultat); }}

Her er innholdet i activity_main.xml
< RelativeLayout xmlns:. Android = "http://schemas.android.com/apk/res/android~~number=plural" xmlns: verktøy = "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" verktøy: kontekst = ". 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: input = "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 /brukernavn" /> ≪ 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 /rolle" android: textAppearance =: android: tekst~~POS=TRUNC = "10sp" /> "android attr /textAppearanceMedium?" ≪ 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 /metode" /> ≪ 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 "android attr /textAppearanceMedium?": Tekststørrelse = "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 /Velg" android: textAppearance =: android: tekst~~POS=TRUNC = "10sp" /> "android attr /textAppearanceMedium?" ≪ Button android: id = "+ id /knappen2" 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 /knappen2" android: layout_alignBottom = "+ id /knappen2" android: layout_alignLeft = "+ id /textView2" android: onclick = "logg inn" 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 /passord" /> < /RelativeLayout >

Her er innholdet i strings.xml
< xml.? versjon = "1.0" encoding = "UTF-8" >? < ressurser > ≪ string name = "app_name" > PHPMYSQL < /string > ≪ string name = "action_settings" > Innstillinger < /string > ≪ string name = "hello_world" > Hei, verden <! /String > ≪ string name = "brukernavn" > brukernavn < /string > ≪ string name = "Passord" > Password < /string > ≪ string name = "LoginGet" > Logg inn - Få < /string > ≪ string name = "LoginPost" > Logg inn - Post < /string > ≪ string name = "App" > Pålogging Application < /string > ≪ string name = "LoginStatus" > Pålogging Status < /string > ≪ string name = "LoginRole" > Pålogging Role < /string > ≪ string name = "Status" > Ikke logget inn < /string > ≪ string name = "rolle" > Ikke tildelt < /string > ≪ string name = "metode" > Pålogging Method < /string > ≪ string name = "Velg" > Velg Method < /string > ≪ /ressurser >

Her er innholdet i AndroidManifest.xml
< xml version = "1.0" encoding = "utf-8" > < manifest xmlns.?: android = "http://schemas.android.com/apk/res/android" pakken = "com.example.phpmysql" android: version = "1" android: Versjons = "1.0" > ≪ bruker-SDK android: minSdkVersion = "8" android: targetSdkVersion = "17" /> ≪ bruker-tillatelse android: name = "android.permission.INTERNET" /> ≪ bruker-tillatelse android: name = "android.permission.ACCESS_NETWORK_STATE" /> ≪ søknad android: allowBackup = "true" android: icon = "@ teikne /ic_launcher" android: label = "@ string /app_name" android: tema = "@ stil /AppTheme" > ≪ aktivitet android: name = "com.example.phpmysql.MainActivity" android: label = "@ string /app_name" > ≪ intent-filter > ≪ handling android: name = "android.intent.action.MAIN" /> ≪ kategorien android: name = "android.intent.category.LAUNCHER" /> ≪ /intent-filter > ≪ /aktivitet > ≪ /søknad > < /manifest >

La oss prøve å kjøre PHPMYSQL søknad. Jeg antar at du har koblet den faktiske Android Mobile-enhet med datamaskinen. For å kjøre programmet fra Android studio, åpne en av prosjektets aktivitets filer, og klikk Kjør ikonet fra verktøylinjen. Før du starter programmet, vil Android studio vise følgende vindu for å velge et alternativ hvor du vil kjøre Android applikasjon

Velg den mobile enheten som et alternativ, og deretter sjekke den mobile enheten som vil vise følgende skjermbilde og minus.;

nå bare skrive inn brukernavn og passord. I mitt tilfelle jeg skriver admin som brukernavn og passord. Det er vist i figuren −

Trykk nå på Get knappen og vent noen sekunder og svar vil bli lastet ned og vil bli vist til deg. I dette tilfellet, er responsen den rollen som er hentet i tilfelle av admin som brukernavn og password.It er vist i figuren nedenfor −

Nå igjen trykker på POST-knappen, og samme resultat ville dukke opp. Det er vist i figuren nedenfor: