質問させていただきます。
目的は、Unityでlocalhostのphpに接続し、xamppのmysqlから情報を取得したいと考えています。
参考にしているサイトは下記です。
https://qiita.com/nmxi/items/9da751e88e0b6aefaa62
localhostのxamppに下記の配置で『setuzoku.php』を置いています。
C:\xampp\htdocs\php\unity\setuzoku.php
xamppを起動し、ApacheとMySQLをstartした状態で、下記アドレスをクロームで表示すると問題なく、xamppのMySQLからデータの取得ができています。
http://localhost/php/unity/setuzoku.php
ですが、Unityで上記のアドレスで接続しても、 HttpPost NG: 404 Not Found が返ってくるだけで接続できません。
原因が分からない状況の為、質問させていただきました。
どなたかご指摘いただけますと幸いです。
何卒、宜しくお願い申し上げます。
<PHPのソースコード>
setuzoku.php
PHP
1<?php 2 require_once('address.php'); 3 4 // $id = isset($_POST['id'])? $_POST['id'] : 1; // ※この行はPHPだけの動作確認用の行です。無視して下さい。 5 6 //POSTうけとり 7 $id = $_POST["id"]; //要求されてくるid 8 9 $res; 10 11 12 try{ 13 $pdo = new PDO('mysql:host='.servername.'; dbname='.databasename.'; charset=utf8;' , username , password); 14 } catch(PDOException $e){ 15 echo "接続に失敗しました。".$e->getMessage(); 16 exit; 17 } 18 19 $sql = <<<SQL 20 SELECT empID,empName 21 FROM employee 22 WHERE empID = {$id}; 23 SQL; 24 25 $stmt = $pdo->query($sql); 26 27 while($row = $stmt -> fetch() ){ 28 $res = $row['empID']; 29 $res = $res. $row['empName']; 30 } 31 32 $stmt -> closeCursor(); 33 $pdo = null; 34 35 echo $res; 36 37 exit; 38?>
address.php
PHP
1<?php 2 define("servername" , "localhost"); 3 define("databasename" , "empDB"); 4 define("username" , "root"); 5 define("password" , ""); 6?>
<UnityのC#のソースコード>
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5 6public class Catch : MonoBehaviour 7{ 8 9 public Text ResultText_; //結果を格納するテキスト 10 public Text InputText_; //idを入力するインプットフィールド 11 12 public string ServerAddress = "http://localhost/php/unity/setuzoku.php"; 13 14 //SendSignalボタンを押した時に実行されるメソッド 15 public void SendSignal_Button_Push() 16 { 17 StartCoroutine("Access"); //Accessコルーチンの開始 18 } 19 20 [System.Obsolete] 21 private IEnumerator Access() 22 { 23 Dictionary<string, string> dic = new Dictionary<string, string>(); 24 25 dic.Add("id", InputText_.GetComponent<Text>().text); //インプットフィールドからidの取得); 26 //複数phpに送信したいデータがある場合は今回の場合dic.Add("hoge", value)のように足していけばよい 27 28 StartCoroutine(Post(ServerAddress, dic)); // POST 29 30 yield return 0; 31 } 32 33 34 35 36 37 [System.Obsolete] 38 private IEnumerator Post(string url, Dictionary<string, string> post) 39 { 40 WWWForm form = new WWWForm(); 41 foreach (KeyValuePair<string, string> post_arg in post) 42 { 43 form.AddField(post_arg.Key, post_arg.Value); 44 } 45 WWW www = new WWW(url, form); 46 47 yield return StartCoroutine(CheckTimeOut(www, 3f)); //TimeOutSecond = 3s; 48 49 if (www.error != null) 50 { 51 Debug.Log("HttpPost NG: " + www.error); 52 //そもそも接続ができていないとき 53 54 } 55 else if (www.isDone) 56 { 57 //送られてきたデータをテキストに反映 58 ResultText_.GetComponent<Text>().text = www.text; 59 } 60 } 61 62 63 64 65 66 [System.Obsolete] 67 private IEnumerator CheckTimeOut(WWW www, float timeout) 68 { 69 float requestTime = Time.time; 70 71 while (!www.isDone) 72 { 73 if (Time.time - requestTime < timeout) 74 yield return null; 75 else 76 { 77 Debug.Log("TimeOut"); //タイムアウト 78 //タイムアウト処理 79 // 80 // 81 break; 82 } 83 } 84 yield return null; 85 } 86} 87
データベースのemployeeテーブルの構造は、列を
empID | empName
だけにしています。
情報は
1 | 一番の社員
2 | 二番目の社員
3 | 三番目の社員
と、しています。
何卒、宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー