Unity x Mysql x PHP x Json

更新於 發佈於 閱讀時間約 25 分鐘
開啟Xampp伺服器,並啟動 apache & mysql

mysql建立

開啟Unity 建立 Script

toPhp.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; //UI物件需要增加此行
using UnityEngine.Networking;
using System.Text.RegularExpressions;
public class toPhp : MonoBehaviour
{
    public Text UItext; //要設公開的才能從外部加入UItext
    public Text MYtext;
    // Start is called before the first frame update
    void Start()
    {
    }
    public void ConnectTophp()
    {
        StartCoroutine(Test());
    }
    IEnumerator Test()
    {
        string strText = "hello";
        string strUrl = string.Format("http://localhost/unitymysql/test.php?a={0}", strText);
        UnityWebRequest request = UnityWebRequest.Get(strUrl);
        yield return request.SendWebRequest();
        if (request.result == UnityWebRequest.Result.ConnectionError)
        {
            Debug.Log(request.error);
            yield break;
        }
        string html = request.downloadHandler.text;
        changeUItext(html);
        Debug.Log(html);
    }
    public void changeUItext(string html)
    { //設公開的才能利用Unity內建Button觸發方式來喚出
        UItext.text = html;
    }
    // Update is called once per frame
    void Update()
    {
        
    }
    public void ConnectMysql()
    {
        StartCoroutine(Testdb());
    }
    IEnumerator Testdb()
    {
        string strUrl = "http://localhost/unitymysql/connectmysql.php";
        UnityWebRequest request = UnityWebRequest.Get(strUrl);
        yield return request.SendWebRequest();
        if (request.result == UnityWebRequest.Result.ConnectionError)
        {
            Debug.Log(request.error);
            yield break;
        }
        string html = request.downloadHandler.text;
        Debug.Log(html);
        var received_data = Regex.Split(html, "</next>");
        int dataNum = (received_data.Length - 1) / 2;
        Debug.Log("dataNum = " + dataNum.ToString());
        for (int i = 0; i < dataNum; i++)
        {
            string myhtml = "Name: " + received_data[2 * i] + " email: " + received_data[2 * i + 1];
            changeMYtext(myhtml);
            Debug.Log("Name: " + received_data[2 * i] + " email: " + received_data[2 * i + 1]);
        }
    }
    public void changeMYtext(string myhtml)
    { //設公開的才能利用Unity內建Button觸發方式來喚出
        MYtext.text = myhtml;
    }
}

Unity物件

toWeb物件設定

此處需特別留意設定 UItext & MYtext ,否則會出現物件未設定的Null錯誤

Button 設定

測試連線按鈕
連結mysql按鈕

test.php

<?php
	$a = $_GET["a"];
			
	echo $a;
?>

connectmysql.php

<?php
	// 建立MySQL的資料庫連接 
	$host = "localhost";
	$dbuser = "root";
	$dbpassword = "1234";
	$dbname = "user";
	
	$link = mysqli_connect($host,$dbuser,$dbpassword,$dbname);
	if ( !$link ) 
	{
		echo "不正確連接資料庫 " . mysqli_connect_error();
		echo "<br>";
		exit();
	}
	
	mysqli_query($link, "SET NAMES utf8");
	mysqli_query($link, "SET CHARACTER_SET_database= utf8");
	mysqli_query($link, "SET CHARACTER_SET_CLIENT= utf8");
	mysqli_query($link, "SET CHARACTER_SET_RESULTS= utf8");
	$sql = "select * from users";
	
	$result = mysqli_query($link, $sql);
	
	if (!$result) 
	{
		echo "{$sql} 語法執行失敗,錯誤訊息 " . mysqli_error($link);
		echo "<br>";
		mysqli_close($link);  // 關閉資料庫連接
		exit();
	}
	
	$rowNum = mysqli_num_rows($result);
	if ($rowNum <= 0)
	{
		echo "沒有資料";
		echo "<br>";
		mysqli_close($link);  // 關閉資料庫連接
		exit();
	}
	
	while($array = mysqli_fetch_array($result))
	{
		echo $array["name"]."</next>";
		echo $array["email"]."</next>";
	}
	
	mysqli_free_result($result);
	
	mysqli_close($link);  // 關閉資料庫連接
	
?>

使用 Json

使用 Json 傳輸的 toPhp.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; //UI物件需要增加此行
using UnityEngine.Networking;
using System.Text.RegularExpressions;
public class toPhp : MonoBehaviour
{
    public Text UItext; //要設公開的才能從外部加入UItext
    public Text MYtext;
    public Text Stext; //Json 用
    public Text Utext; //Json 用
    public string Selectx = "http://localhost/unitymysql/tojsonsel.php";
    public string Updatex = "http://localhost/unitymysql/tojsonup.php";
    // Start is called before the first frame update
    void Start()
    {
    }
    public void ConnectTophp()
    {
        StartCoroutine(Test());
    }
    IEnumerator Test()
    {
        string strText = "hello";
        string strUrl = string.Format("http://localhost/unitymysql/test.php?a={0}", strText);
        UnityWebRequest request = UnityWebRequest.Get(strUrl);
        yield return request.SendWebRequest();
        if (request.result == UnityWebRequest.Result.ConnectionError)
        {
            Debug.Log(request.error);
            yield break;
        }
        string html = request.downloadHandler.text;
        changeUItext(html);
        Debug.Log(html);
    }
    public void changeUItext(string html)
    { //設公開的才能利用Unity內建Button觸發方式來喚出
        UItext.text = html;
    }
    // Update is called once per frame
    void Update()
    {
        
    }
    public void ConnectMysql()
    {
        StartCoroutine(Testdb());
    }
    IEnumerator Testdb()
    {
        string strUrl = "http://localhost/unitymysql/connectmysql.php";
        UnityWebRequest request = UnityWebRequest.Get(strUrl);
        yield return request.SendWebRequest();
        if (request.result == UnityWebRequest.Result.ConnectionError)
        {
            Debug.Log(request.error);
            yield break;
        }
        string html = request.downloadHandler.text;
        Debug.Log(html);
        var received_data = Regex.Split(html, "</next>");
        int dataNum = (received_data.Length - 1) / 2;
        Debug.Log("dataNum = " + dataNum.ToString());
        for (int i = 0; i < dataNum; i++)
        {
            string myhtml = "Name: " + received_data[2 * i] + " email: " + received_data[2 * i + 1];
            changeMYtext(myhtml);
            Debug.Log("Name: " + received_data[2 * i] + " email: " + received_data[2 * i + 1]);
        }
    }
    public void changeMYtext(string myhtml)
    { //設公開的才能利用Unity內建Button觸發方式來喚出
        MYtext.text = myhtml;
    }
    //json
    public void JsonSelect()
    { //設公開的才能利用Unity內建Button觸發方式來喚出
        StartCoroutine(SelectJson());
    }
    IEnumerator SelectJson()
    {
        WWWForm form = new WWWForm();
        form.AddField("getlist", "all");
        using (UnityWebRequest www = UnityWebRequest.Post(Selectx, form))
        {
        www.downloadHandler = new DownloadHandlerBuffer();
        yield return www.SendWebRequest();
        if (www.result == UnityWebRequest.Result.ConnectionError)
            {
                Debug.Log(www.error);
            }
            else
            {
                string responseText = www.downloadHandler.text;
                Stext.text = responseText;
                Debug.Log(responseText);
            }
        }
    }
    public void JsonUpdate()
    { //設公開的才能利用Unity內建Button觸發方式來喚出
        StartCoroutine(UpdateJson());
    }
    IEnumerator UpdateJson()
    {
        WWWForm form = new WWWForm();
        form.AddField("udata", "'abc'");
        form.AddField("edata", "'abc'");
        using (UnityWebRequest www = UnityWebRequest.Post(Updatex, form))
        {
            www.downloadHandler = new DownloadHandlerBuffer();
            yield return www.SendWebRequest();
            if (www.result == UnityWebRequest.Result.ConnectionError)
            {
                Debug.Log(www.error);
            }
            else
            {
                string responseText = www.downloadHandler.text;
                Utext.text = responseText;
                Debug.Log(responseText);
            }
        }
    }
    }

tojsonsel.php

<?php
	// 建立MySQL的資料庫連接 
	$host = "localhost";
	$dbuser = "root";
	$dbpassword = "1234";
	$dbname = "user";
	
	$link = mysqli_connect($host,$dbuser,$dbpassword,$dbname);
	if ( !$link ) 
	{
		echo "不正確連接資料庫 " . mysqli_connect_error();
		echo "<br>";
		exit();
	}
	
	mysqli_query($link, "SET NAMES utf8");
	mysqli_query($link, "SET CHARACTER_SET_database= utf8");
	mysqli_query($link, "SET CHARACTER_SET_CLIENT= utf8");
	mysqli_query($link, "SET CHARACTER_SET_RESULTS= utf8");
	$sql = "select * from users";
	
	$result = mysqli_query($link, $sql);
	
	if (!$result) 
	{
		echo "{$sql} 語法執行失敗,錯誤訊息 " . mysqli_error($link);
		echo "<br>";
		mysqli_close($link);  // 關閉資料庫連接
		exit();
	}
	
	$rowNum = mysqli_num_rows($result);
	if ($rowNum <= 0)
	{
		echo "沒有資料";
		echo "<br>";
		mysqli_close($link);  // 關閉資料庫連接
		exit();
	}
	
	$ary[]= array();
	while($row = mysqli_fetch_assoc($result))
	{
		$ary=$row;
	}
	echo json_encode($ary);
	
	mysqli_free_result($result);
	
	mysqli_close($link);  // 關閉資料庫連接
	
?>

tojsonup.php

<?php
	$udata=$_POST["udata"];
	$edata=$_POST["edata"];
	// 建立MySQL的資料庫連接 
	$host = "localhost";
	$dbuser = "root";
	$dbpassword = "1234";
	$dbname = "user";
	
	$link = mysqli_connect($host,$dbuser,$dbpassword,$dbname);
	if ( !$link ) 
	{
		echo "不正確連接資料庫 " . mysqli_connect_error();
		echo "<br>";
		exit();
	}
	
	mysqli_query($link, "SET NAMES utf8");
	mysqli_query($link, "SET CHARACTER_SET_database= utf8");
	mysqli_query($link, "SET CHARACTER_SET_CLIENT= utf8");
	mysqli_query($link, "SET CHARACTER_SET_RESULTS= utf8");
//$udata='51';
	mysqli_select_db($link,"user");
	$sql = "update users set name ={$udata},email ={$edata} where id ='51'";
	
	$result = mysqli_query($link, $sql);
	
	if (!$result) 
	{
		echo "{$sql} 語法執行失敗,錯誤訊息 " . mysqli_error($link);
		echo "<br>";
		mysqli_close($link);  // 關閉資料庫連接
		exit();
	}
	
	mysqli_free_result($result);
	
	mysqli_close($link);  // 關閉資料庫連接
	
?>
即將進入廣告,捲動後可繼續閱讀
為什麼會看到廣告
avatar-img
40會員
130內容數
獨立遊戲開發紀錄
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
吳佳鑫的沙龍 的其他內容
程式原碼: https://github.com/JokerWuXin/ChatGpt-LineBot 步驟: S1.至OPEN AI 取得 API KEY S2.至LineBot 取得 Channel access token 、Channel secret 並 進行相關設定 S3.至Verce
安裝Python 安裝Open Ai 參考資料 註冊申請 Open AI API 至官方網站申請為會員,接著選 View API Key 進入後 選擇 Create CHAT 範例 官方範例 中文CHAT
XAMPP 伺服器架設 S1. 下載與安裝 S2. 啟動XAMPP、Apache、Mysql S3. Mysql安全性設定 shell : --user=root password "1234" phpmyadmin(config.inc.php) S4. Apache設定
本範例為 PHP 載入 CSV檔,進行數據統計,並計算出各號碼開出次數。 資料來源: 政府資料開放平台 公益彩券各年度各期電腦型彩券獎號、銷售金額與獎金總額 載入CSV檔的作法 將資料進行統計整理 將資料放於陣列的方式 自定義函式 完整原碼
構想上,前端簡單的使用Google Map 做定位,並寫入SQL做第一段比對經緯度。接著前端有一個php上傳圖片的功能(沒有 https 所以就不做網頁開相機的方式)。經過上傳至伺服器後,python 圖形辨識,比對上傳的圖片,若比對成功或相似度差異不大,則判定正確,寫入SQL,端頁面顯示奪寶成功。
本專題為兩塊ESP8266-ESP01 ,分別為 Arduino+ESP-01+YL-69 土壤濕度檢測器與LED燈 ,以及 ESP-01 + DHT11 + LED 傳輸給伺服器端,並於伺服器上 WebSite 透過ESP-01上傳儲 存於 MYSQL 資料呈現曲線圖給前端使用者。此外,前端使用者
程式原碼: https://github.com/JokerWuXin/ChatGpt-LineBot 步驟: S1.至OPEN AI 取得 API KEY S2.至LineBot 取得 Channel access token 、Channel secret 並 進行相關設定 S3.至Verce
安裝Python 安裝Open Ai 參考資料 註冊申請 Open AI API 至官方網站申請為會員,接著選 View API Key 進入後 選擇 Create CHAT 範例 官方範例 中文CHAT
XAMPP 伺服器架設 S1. 下載與安裝 S2. 啟動XAMPP、Apache、Mysql S3. Mysql安全性設定 shell : --user=root password "1234" phpmyadmin(config.inc.php) S4. Apache設定
本範例為 PHP 載入 CSV檔,進行數據統計,並計算出各號碼開出次數。 資料來源: 政府資料開放平台 公益彩券各年度各期電腦型彩券獎號、銷售金額與獎金總額 載入CSV檔的作法 將資料進行統計整理 將資料放於陣列的方式 自定義函式 完整原碼
構想上,前端簡單的使用Google Map 做定位,並寫入SQL做第一段比對經緯度。接著前端有一個php上傳圖片的功能(沒有 https 所以就不做網頁開相機的方式)。經過上傳至伺服器後,python 圖形辨識,比對上傳的圖片,若比對成功或相似度差異不大,則判定正確,寫入SQL,端頁面顯示奪寶成功。
本專題為兩塊ESP8266-ESP01 ,分別為 Arduino+ESP-01+YL-69 土壤濕度檢測器與LED燈 ,以及 ESP-01 + DHT11 + LED 傳輸給伺服器端,並於伺服器上 WebSite 透過ESP-01上傳儲 存於 MYSQL 資料呈現曲線圖給前端使用者。此外,前端使用者
你可能也想看
Google News 追蹤
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
本章節旨在介紹如何在不同操作系統上安裝和配置PHP環境,並使用命令行工具進行基礎操作。此外,還介紹了使用Visual Studio Code進行PHP開發的步驟,包括安裝擴展和設置調試環境。
Thumbnail
這個章節介紹了PHP的基本特性和應用領域,並且列舉了使用PHP的知名公司和網站。了解PHP的簡單易學、跨平台、嵌入HTML等特性,以及PHP在動態網站、電子商務、內容管理系統、社交媒體平台、數據庫管理和API開發中的應用。
Thumbnail
戴夫寇爾研究團隊發現PHP在Windows系統上存在遠端程式碼執行漏洞,影響多個PHP版本,包括XAMPP預設安裝環境。漏洞源於字元編碼轉換的問題,允許攻擊者在遠端伺服器上執行任意程式碼。建議使用者立即升級至最新PHP版本,或採取臨時緩解措施。
Thumbnail
本文將介紹在Windows環境中安裝SQL Server及相關PHP擴展,以進行與SQL Server的串接。透過本文所述步驟,您將能在Windows環境中順利進行PHP與SQL Server串接設定。
Thumbnail
本文將介紹在Windows環境中安裝Oracle Instant Client及相關PHP擴展,以進行與Oracle Database的串接。透過本文所述步驟,您將能在Windows環境中順利進行PHP與Oracle Database的串接設定。
Thumbnail
登入資料庫方式,請執行以下的命令: sudo mysql -u root -p 建立一個新資料庫,我們建立“itslinuxfoss”資料庫為例: CREATE DATABASE itslinuxfoss; 為新建立的資料庫設定新的使用者名稱和密碼: GRANT ALL PRIVILEGE
Thumbnail
PHP(全名為「PHP: Hypertext Preprocessor」)是一門開源的伺服器端程式語言,為動態網頁開發設計。閱讀本文將讓您瞭解PHP的特點、廣泛支援、易學性、資源豐富以及跨平臺性。
PHP(Hypertext Preprocessor)是一種流行的開源腳本語言,特別適用於網頁開發。它具有簡單的語法和易於理解的程式碼結構,並且支持多種數據庫系統和其他技術和框架集成。本文將介紹PHP的主要特點和廣泛應用性。
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
本章節旨在介紹如何在不同操作系統上安裝和配置PHP環境,並使用命令行工具進行基礎操作。此外,還介紹了使用Visual Studio Code進行PHP開發的步驟,包括安裝擴展和設置調試環境。
Thumbnail
這個章節介紹了PHP的基本特性和應用領域,並且列舉了使用PHP的知名公司和網站。了解PHP的簡單易學、跨平台、嵌入HTML等特性,以及PHP在動態網站、電子商務、內容管理系統、社交媒體平台、數據庫管理和API開發中的應用。
Thumbnail
戴夫寇爾研究團隊發現PHP在Windows系統上存在遠端程式碼執行漏洞,影響多個PHP版本,包括XAMPP預設安裝環境。漏洞源於字元編碼轉換的問題,允許攻擊者在遠端伺服器上執行任意程式碼。建議使用者立即升級至最新PHP版本,或採取臨時緩解措施。
Thumbnail
本文將介紹在Windows環境中安裝SQL Server及相關PHP擴展,以進行與SQL Server的串接。透過本文所述步驟,您將能在Windows環境中順利進行PHP與SQL Server串接設定。
Thumbnail
本文將介紹在Windows環境中安裝Oracle Instant Client及相關PHP擴展,以進行與Oracle Database的串接。透過本文所述步驟,您將能在Windows環境中順利進行PHP與Oracle Database的串接設定。
Thumbnail
登入資料庫方式,請執行以下的命令: sudo mysql -u root -p 建立一個新資料庫,我們建立“itslinuxfoss”資料庫為例: CREATE DATABASE itslinuxfoss; 為新建立的資料庫設定新的使用者名稱和密碼: GRANT ALL PRIVILEGE
Thumbnail
PHP(全名為「PHP: Hypertext Preprocessor」)是一門開源的伺服器端程式語言,為動態網頁開發設計。閱讀本文將讓您瞭解PHP的特點、廣泛支援、易學性、資源豐富以及跨平臺性。
PHP(Hypertext Preprocessor)是一種流行的開源腳本語言,特別適用於網頁開發。它具有簡單的語法和易於理解的程式碼結構,並且支持多種數據庫系統和其他技術和框架集成。本文將介紹PHP的主要特點和廣泛應用性。