App Inventor 將資料寫入 MySQL 資料庫
App Inventor

App Inventor 將資料寫入 MySQL 資料庫

昨天介紹了如何從 MySQL 讀取資料到 App Inventor

今天來教怎麼從 App Inventor 將資料寫入 MySQL 資料庫!





P.S. 新建立的 000WebHost 免費虛擬主機,又被刪掉了!所以改將檔案放到我自己的虛擬主機,目前已更新完畢。




  1. 開啟記事本,輸入以下程式碼:
<?php
	include("connMySQL.php");
	
	$sql_query = "INSERT INTO member VALUES(?, ?, ?)";
	$result = $pdo->prepare($sql_query);
	
	if($result->execute([$_POST["id"], $_POST["name"], $_POST["password"]])) {
		echo "資料新增成功";
	}
	else {
		echo "資料新增失敗";
	}
?>

檔案名稱為:MysqlWrite.php

存檔完後上傳到 000WebHost 主機,要跟 connMySQL.php 放在一起。( connMySQL.php 在上一篇文章有提供,這裡就不再講一次了!)

connMySQL.php 檔案下載


程式解析:

程式一開始先引入 connMySQL.php,查看資料庫是否連線成功,成功再繼續往下執行。

變數 sql_query 存放 SQL 語法 (INSERT INTO member VALUES(?, ?, ?)),? 問號部份分別是 帳號 ID(id)、使用者暱稱(name) 和 密碼(password),這三個要輸入值的地方,先用 ? 問號標示。

要執行 INSERT 敘述時,要先用 prepare 方法,變數 pdo 是在 connMySQL.php 裡建的,是指向 PDO 實例的變數,用變數 pdo 呼叫(-> 符號是呼叫方法的意思) prepare 方法,帶入的參數為 SQL 語法,隨後 prepare 方法會回傳 PDOStatement 的實例,再把他指定給變數 result

要執行 SQL 指令,必須要使用 execute 方法,帶入的參數就是要給剛剛 ? 問號的部份,所以 execute 裡,用 $_POST[] 去接從 App Inventor 傳入的值,然後我們用剛剛的變數 result 去呼叫 execute 方法,執行成功後會回傳 True,所以我們直接放在判斷裡,成功的話就 echo “資料新增成功”,反之就是失敗。


除了用 $_POST 外,也能用 $_REQUEST 去接資料。


2. 打開 App Inventor,開啟上次的專案 MySQL.aia

新增一些元件如下圖所示,主要新增寫入按鈕、三個文字輸入框、網路元件(寫入用)


切換到程式設計

新增程式方塊如下:


程式解析:

網路元件的網址為 MysqlWrite.php 的位置,以我的為例:
https://jbprogramnotes.com/AppInventor/PHPFiles/MysqlWrite.php

判斷三個欄位是否都有填入資料,都有填入再繼續執行下去。(其實不判斷也行,因為之前在建立資料表的時候,是否空值有打勾,所以就算沒填,也寫得進去!)

呼叫網路元件執行 POST 文字請求(用 POST 比 GET 還安全)

文字格式為:
id=新增的資料&name=新增的資料&password=新增的資料(各個資料間用 & 符號隔開)

這裡的三個名稱 id、name、password 可以自己取,但要跟在 MysqlWrite.php 裡,用 $_POST 去接的值的名稱一樣!

例如:我要傳送分數的資料,我用 score=”100″,那麼在 PHP 裡,要取得 100 這個值,就要用 $_POST[“score”] 去接。

最後當網路元件取得文字回應內容就是我在 PHP echo 的資料。

有關 Get 和 Post 的應用可參考之前寫的文章 -> Web 元件使用 POST 和 GET 的傳值方式 – JB 程式筆記 (jbprogramnotes.com)


App 到此就完成設計了!可以執行看看




App 完整程式方塊(包含讀取)




專案檔案下載(包含讀取)

connMySQL.php

MysqlRead.php

MysqlWrite.php

MySQL.aia





App 執行範例




如果覺得文章內容還不錯的話,麻煩請幫我點個讚!感謝

可以多點幾次喔~~

第一次點讚需使用 Google 或 Facebook 帳號註冊

發表迴響