まあ、以下のソース見ればわかると思います。僕のサーバにアクセスするようにしてますが、適時読み違えてください。
githubはここ
zipbはここ
ファイル:sql_choconnect.php <?php $chkpdo = new PDO('mysql:host=127.0.0.1;dbname=test905;charset=utf8',getenv(DBUSER),getenv(DBPASS)); if($chkpdo == null){ echo "0"; } else { echo "1"; } ?>
ファイル:sql_connect.php <?php function connectDB(){ try { $pdo = new PDO('mysql:host=127.0.0.1;dbname=test905;charset=utf8',getenv(DBUSER),getenv(DBPASS)); } catch (PDOException $e) { exit('' . $e->getMessage()); } return $pdo; } ?>
ファイル:sql_getcount.php <?php require_once('sql_connect.php'); $pdo = connectDB(); $stmt = $pdo->query("SELECT COUNT(*) FROM hiscore"); echo $stmt->fetchColumn(); ?>
ファイル:sql_gethiscore.php <?php require_once('sql_connect.php'); $pdo = connectDB(); $stmt = $pdo->query("SELECT * FROM hiscore where score=(select max(score) from hiscore)"); foreach ($stmt as $row) { echo $row['name']; echo ','; echo $row['score']; echo ','; } ?>
ファイル:sql_insert.php <?php require_once('sql_connect.php'); $pdo = connectDB(); $n = $_POST['name']; $s = $_POST['score']; $stmt = $pdo->query("INSERT INTO hiscore (name,score) VALUES('$n',$s)"); $stmt = $pdo->query("COMMIT");
ファイル:GameManager.cs using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.Networking; public class GameManager : MonoBehaviour { public string urlChkConnect = "https://www.edge-bp.com/test/test905/sql_chkconnect.php"; public string urlGetCount = "https://www.edge-bp.com/test/test905/sql_getcount.php"; public string urlInsert = "https://www.edge-bp.com/test/test905/sql_insert.php"; public string urlGetHiscore = "https://www.edge-bp.com/test/test905/sql_gethiscore.php"; public GameObject goConnect; public GameObject goName; public GameObject goScore; public GameObject goInputName; public GameObject goInputScore; string[] strConnect = { "接続中","接続成功", "接続失敗"}; private const string connectNG = "接続失敗"; private string coStr; void Start() { goConnect.GetComponent().text = strConnect[0]; StartCoroutine(getCount(urlChkConnect)); } IEnumerator getCount(string url ) { IEnumerator coroutine; int num = 0; // // mariaDBに接続できるか。 // coroutine = getWeb(urlChkConnect,num); yield return coroutine; // コルーチンからの戻り値をintに変換する num = (int)coroutine.Current; if (num == -1) { goConnect.GetComponent ().text = strConnect[2]; } else { if (num != 1) { goConnect.GetComponent ().text = strConnect[2]; } else { goConnect.GetComponent ().text = strConnect[1]; } } if (goConnect.GetComponent ().text != strConnect[1]) yield break; // // 何人登録されているか // coroutine = getWeb(urlGetCount,num); yield return coroutine; // コルーチンからの戻り値をintに変換する num = (int)coroutine.Current; if (num == 0) { // 誰も登録されていない場合は、とりあえず一人登録する coroutine = setWeb(urlInsert, "kenji", 1); yield return coroutine; } // // hiscoreを得る // coroutine = getWeb(urlGetHiscore); yield return coroutine; // coStrから、一番最初に見つけたハイスコア(同一得点もあり得るので)をフィールドにセットする setFirsthiscore(coStr); } IEnumerator getWeb(string url,int num) { UnityWebRequest www = UnityWebRequest.Get(url); yield return www.SendWebRequest(); if (www.isNetworkError) { num = -1; yield return num; } yield return int.Parse(www.downloadHandler.text); } IEnumerator getWeb(string url) { UnityWebRequest www = UnityWebRequest.Get(url); yield return www.SendWebRequest(); if (www.isNetworkError) { yield break; } // コルーチンの中は ref が使えないので、クラス内の coStr に結果を納めます。 coStr = www.downloadHandler.text; } IEnumerator setWeb(string url,string name,int score) { WWWForm form = new WWWForm(); form.AddField("name", name); form.AddField("score", score); UnityWebRequest www = UnityWebRequest.Post(url, form); www.chunkedTransfer = false; yield return www.SendWebRequest(); /* if (www.isNetworkError || www.isHttpError) { Debug.Log("error:"+www.error); } else { Debug.Log("Form upload complete!"); Debug.Log("MULTIPART: " + www.downloadHandler.text); } */ } // coStrから、一番最初に見つけたハイスコア(同一得点もあり得るので)をフィールドにセットする void setFirsthiscore(string str) { int n = 0; string wStr = ""; // 最初の名前を読み込み書き込む。 while (str[n] != ',') { wStr += str[n++]; } goName.GetComponent ().text = wStr; n++; // 最初の数字を読み込む。 wStr = "HISCORE:"; while (str[n] != ',') { wStr += str[n++]; } goScore.GetComponent ().text = wStr; } // ボタンが押されたらユーザーと得点をmariaDBに登録する public void OnClick() { if (goInputName.GetComponent ().text == "" || goInputScore.GetComponent ().text == "" ) return; // coStrから、一番最初に見つけたハイスコア(同一得点もあり得るので)をフィールドにセットする StartCoroutine("setInputData"); } IEnumerator setInputData() { IEnumerator coroutine; coroutine = setWeb(urlInsert, goInputName.GetComponent ().text, int.Parse(goInputScore.GetComponent ().text)); yield return coroutine; coroutine = getWeb(urlGetHiscore); yield return coroutine; setFirsthiscore(coStr); } }