android訪問php,android訪問mysql資料庫

本文目錄一覽:

怎麼連接android和php mysql資料庫

如何連接android和php mysql資料庫

我們先來看一個簡單的Android app例子(這裡是一個商品存貨清單項目),在Android程序中,我們可以訪問(call)PHP腳本來執行簡單的CRUD操作(創建,讀取,更新,刪除)。為了使你對它的體系結構有一個大概的了解,這裡先說一下它是怎麼工作的。首先你的Android項目訪問(call)PHP腳本來執行一條數據操作,我們稱它為「創建」。然後PHP腳本連接MySQL資料庫來執行這個操作。這樣,數據從Android程序流向PHP腳本,最終存儲在MySQL資料庫中。

好了,讓我們來深入的看一下。

請注意:這裡提供的代碼只是為了使你能簡單的連接Android項目和PHP,MySQL。你不能把它作為一個標準或者安全編程實踐。在生產環境中,理想情況下你需要避免使用任何可能造成潛在注入漏洞的代碼(比如MYSQL注入)。MYSQL注入是一個很大的話題,不可能用單獨的一篇文章來說清楚,並且它也不在本文討論的範圍內,所以本文不以討論。

1. 什麼是WAMP Server

WAMP是Windows,Apache,MySQL和PHP,Perl,Python的簡稱。WAMP是一個一鍵安裝的軟體,它為開發PHP,MySQL Web應用程序提供一個環境。安裝這款軟體你相當於安裝了Apache,MySQL和PHP。或者,你也可以使用XAMP。

2. 安裝和使用WAMP Server

你可以從下載WAMP,安裝完成之後,可以從開始-所有程序-WampServer-StartWampServer運行該程序。

在瀏覽器中輸入來測試你的伺服器是否安裝成功。同樣的,也可以打開來檢驗phpmyadmin是否安裝成功。

3. 創建和運行PHP項目

現在,你已經有一個能開發PHP和MYSQL項目的環境了。打開安裝WAMP Server的文件夾(在我的電腦中,是C:\wamp\),打開www文件夾,為你的項目創建一個新的文件夾。你必須把項目中所有的文件放到這個文件夾中。

新建一個名為android_connect的文件夾,並新建一個php文件,命名為test.php,嘗試輸入一些簡單的php代碼(如下所示)。輸入下面的代碼後,打開,你會在瀏覽器中看到「Welcome,I am connecting Android to PHP,MySQL」(如果沒有正確輸入,請檢查WAMP配置是否正確)

test.php

4. 打開MainScreenActivity.java為main_screen.xml文件里的兩個按鈕添加點擊事件

MainScreenActivity.java

7. 添加一個新產品(寫入)

創建一個新的view和activity來向MySQL資料庫添加新產品。

新建一個簡單的表單,創建提供輸入產品名稱,價格和描述的EditText

add_product.xml

8. 新建一個Activity來處理向MySQL資料庫插入新產品。

新建名為NewProductActivity.java的文件,輸入以下代碼。在下面的代碼中

首先,從EditText獲得用戶輸入的產品數據,格式化成基本參數格式

然後,向create_product.php發送請求,通過HTTP POST創建一個新的產品

最後,從create_product.php獲取json返回值,如果success值為1,新得到的列表中就加入了新增的產品。

NewProductActivity.java

11. JSONParser類

我用一個JSONParser類從URL獲得JSON格式的數據。這個類支持兩種http請求,GET和POST方法從URL獲取JSON數據

JSONParser.java

packagecom.example.androidhive; importjava.io.BufferedReader; importjava.io.IOException; importjava.io.InputStream; importjava.io.InputStreamReader; importjava.io.UnsupportedEncodingException; importjava.util.List; importorg.apache.http.HttpEntity; importorg.apache.http.HttpResponse; importorg.apache.http.NameValuePair; importorg.apache.http.client.ClientProtocolException; importorg.apache.http.client.entity.UrlEncodedFormEntity; importorg.apache.http.client.methods.HttpGet; importorg.apache.http.client.methods.HttpPost; importorg.apache.http.client.utils.URLEncodedUtils; importorg.apache.http.impl.client.DefaultHttpClient; importorg.json.JSONException; importorg.json.JSONObject; importandroid.util.Log; publicclassJSONParser { staticInputStream is = null; staticJSONObject jObj = null; staticString json = “”; // constructor publicJSONParser() { } // function get json from url // by making HTTP POST or GET mehtod publicJSONObject makeHttpRequest(String url, String method, ListNameValuePair params) { // Making HTTP request try{ // check for request method if(method == “POST”){ // request method is POST // defaultHttpClient DefaultHttpClient httpClient = newDefaultHttpClient(); HttpPost httpPost = newHttpPost(url); httpPost.setEntity(newUrlEncodedFormEntity(params)); HttpResponse httpResponse = httpClient.execute(httpPost); HttpEntity httpEntity = httpResponse.getEntity(); is = httpEntity.getContent(); }elseif(method == “GET”){ // request method is GET DefaultHttpClient httpClient = newDefaultHttpClient(); String paramString = URLEncodedUtils.format(params, “utf-8”); url += “?”+ paramString; HttpGet httpGet = newHttpGet(url); HttpResponse httpResponse = httpClient.execute(httpGet); HttpEntity httpEntity = httpResponse.getEntity(); is = httpEntity.getContent(); } } catch(UnsupportedEncodingException e) { e.printStackTrace(); } catch(ClientProtocolException e) { e.printStackTrace(); } catch(IOException e) { e.printStackTrace(); } try{ BufferedReader reader = newBufferedReader(newInputStreamReader( is, “iso-8859-1”), 8); StringBuilder sb = newStringBuilder(); String line = null; while((line = reader.readLine()) != null) { sb.append(line + “\n”); } is.close(); json = sb.toString(); } catch(Exception e) { Log.e(“Buffer Error”, “Error converting result “+ e.toString()); } // try parse the string to a JSON object try{ jObj = newJSONObject(json); } catch(JSONException e) { Log.e(“JSON Parser”, “Error parsing data “+ e.toString()); } // return JSON String returnjObj; } }

到這裡,本教程就結束了。

android與php交互的問題

1 加入許可權:

uses-permission android:name=”android.permission.INTERNET” /

uses-permission android:name=”android.permission.ACCESS_NETWORK_STATE” /

2、啟動一個新線程

android4.0開始不允許直接在ui線程直接操作httpClient

3 、注意url:

(不要填寫:127.0.0.1 這個是本機電腦的,模擬器有自己的默認ip)

4、通過handler將數據從新線程中傳送出來

步驟:

1 創建一個httpClient 對象

2 使用post發送數據 創建一個HttpPost對象

3 設置請求參數用setEntity()

4 調用httpClient對象的execute() 發送請求,返回一個HttpResponse

5 調用HttpResponse的getEntity() 方法可以獲取HttpEntity 對象

android 怎麼訪問php路徑並 獲取數據

從php端獲得的數據如何展示由你需求決定,比如是一個條數據,你可以用TextView顯示;如果是數據集列表,你可以用ListView顯示。測試發送的請求,你可以在php端用var_export($_REQUEST);輸出請求到一個log日誌文件查看。

如何連接android和php mysql資料庫

使用JSON連接Android和PHP Mysql資料庫方法:

1、打開安裝WAMP Server的文件夾,打開www文件夾,為你的項目創建一個新的文件夾。必須把項目中所有的文件放到這個文件夾中。

2、新建一個名為android_connect的文件夾,並新建一個php文件,命名為test.php,嘗試輸入一些簡單的php代碼(如下所示)。

test.php

?php

echo”Welcome, I am connecting Android to PHP, MySQL”;

?

3、創建MySQL資料庫和表

創建了一個簡單的只有一張表的資料庫。用這個表來執行一些示例操作。現在,請在瀏覽器中輸入,並打開phpmyadmin。你可以用PhpMyAdmin工具創建資料庫和表。

創建資料庫和表:資料庫名:androidhive,表:product

CREATE TABLE products(

pid int(11) primary key auto_increment,

name varchar(100) not null,

price decimal(10,2) not null,

description text,

created_at timestamp default now(),

updated_at timestamp

);

4、用PHP連接MySQL資料庫

現在,真正的伺服器端編程開始了。新建一個PHP類來連接MYSQL資料庫。這個類的主要功能是打開資料庫連接和在不需要時關閉資料庫連接。

新建兩個文件db_config.php,db_connect.php

db_config.php——–存儲資料庫連接變數

db_connect.php——-連接資料庫的類文件

db_config.php

?php

/*

* All database connection variables

*/

define(‘DB_USER’, “root”); // db user

define(‘DB_PASSWORD’, “”); // db password (mention your db password here)

define(‘DB_DATABASE’, “androidhive”); // database name

define(‘DB_SERVER’, “localhost”); // db server

?

5、在PHP項目中新建一個php文件,命名為create_product.php,並輸入以下代碼。該文件主要實現在products表中插入一個新的產品。

?php

/*

* Following code will create a new product row

* All product details are read from HTTP Post Request

*/

// array for JSON response

$response = array();

// check for required fields

if (isset($_POST[‘name’]) isset($_POST[‘price’]) isset($_POST[‘description’])) {

$name = $_POST[‘name’];

$price = $_POST[‘price’];

$description = $_POST[‘description’];

// include db connect class

require_once __DIR__ . ‘/db_connect.php’;

// connecting to db

$db = new DB_CONNECT();

// mysql inserting a new row

$result = mysql_query(“INSERT INTO products(name, price, description) VALUES(‘$name’, ‘$price’, ‘$description’)”);

// check if row inserted or not

if ($result) {

// successfully inserted into database

$response[“success”] = 1;

$response[“message”] = “Product successfully created.”;

// echoing JSON response

echo json_encode($response);

} else {

// failed to insert row

$response[“success”] = 0;

$response[“message”] = “Oops! An error occurred.”;

// echoing JSON response

echo json_encode($response);

}

} else {

// required field is missing

$response[“success”] = 0;

$response[“message”] = “Required field(s) is missing”;

// echoing JSON response

echo json_encode($response);

}

?

JSON的返回值會是:

當POST 參數丟失

[php] view plaincopy

{

“success”: 0,

“message”: “Required field(s) is missing”

}

Android怎麼調用php寫的網路介面

HttpClient httpclient = new DefaultHttpClient();

HttpGet httpget = new HttpGet(“?”+ “tel=” + tel);

HttpResponse response = httpclient.execute(httpget);

相應的api.php:

$tel= $_GET[‘tel’];

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/191955.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-30 15:14
下一篇 2024-11-30 15:14

相關推薦

  • 如何修改mysql的埠號

    本文將介紹如何修改mysql的埠號,方便開發者根據實際需求配置對應埠號。 一、為什麼需要修改mysql埠號 默認情況下,mysql使用的埠號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • Python 常用資料庫有哪些?

    在Python編程中,資料庫是不可或缺的一部分。隨著互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的資料庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • openeuler安裝資料庫方案

    本文將介紹在openeuler操作系統中安裝資料庫的方案,並提供代碼示例。 一、安裝MariaDB 下面介紹如何在openeuler中安裝MariaDB。 1、更新軟體源 sudo…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL資料庫 在使用Python操作MySQL之前,我們需要先連接MySQL資料庫。在Python中,我…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • 資料庫第三範式會有刪除插入異常

    如果沒有正確設計資料庫,第三範式可能導致刪除和插入異常。以下是詳細解釋: 一、什麼是第三範式和範式理論? 範式理論是關係資料庫中的一個規範化過程。第三範式是範式理論中的一種常見形式…

    編程 2025-04-29
  • MySQL遞歸函數的用法

    本文將從多個方面對MySQL遞歸函數的用法做詳細的闡述,包括函數的定義、使用方法、示例及注意事項。 一、遞歸函數的定義 遞歸函數是指在函數內部調用自身的函數。MySQL提供了CRE…

    編程 2025-04-29
  • leveldb和unqlite:兩個高性能的資料庫存儲引擎

    本文將介紹兩款高性能的資料庫存儲引擎:leveldb和unqlite,並從多個方面對它們進行詳細的闡述。 一、leveldb:輕量級的鍵值存儲引擎 1、leveldb概述: lev…

    編程 2025-04-28
  • MySQL bigint與long的區別

    本文將從數據類型定義、存儲空間、數據範圍、計算效率、應用場景五個方面詳細闡述MySQL bigint與long的區別。 一、數據類型定義 bigint在MySQL中是一種有符號的整…

    編程 2025-04-28

發表回復

登錄後才能評論