App Inventor 將資料寫入 MySQL 資料庫
昨天介紹了如何從 MySQL 讀取資料到 App Inventor
今天來教怎麼從 App Inventor 將資料寫入 MySQL 資料庫!
P.S. 新建立的 000WebHost 免費虛擬主機,又被刪掉了!所以改將檔案放到我自己的虛擬主機,目前已更新完畢。
- 開啟記事本,輸入以下程式碼:
<?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,查看資料庫是否連線成功,成功再繼續往下執行。
變數 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 到此就完成設計了!可以執行看看