2016-11-20 5 views
1

XAMPでローカルPHPを実行してMySqlにデータを保存するために単純なJSONを送信しようとしていますが、Unity C#コードが真であると思っています多くの異なるPHPコードが、半分のコードは半分のエラーを示していません、私は両方の最後に使用されたコードを投稿し、いずれかの歓迎を示唆します。PHPがUnity C#からJSON投稿を読む

C#ユニティ:

using UnityEngine; 
using System.Collections; 
using System.Text; 


public class JSON : MonoBehaviour 
{ 


IEnumerator Start() 
{ 
Debug.Log ("Posting JSON..."); 

string URL = "http://localhost/php/page.php"; 

WWWForm form = new WWWForm(); 
form.AddField ("username", "testuser"); 
form.AddField ("password", "testpass"); 

var headers = form.headers; 
headers["content-type"] = "application/json"; 

WWW www = new WWW(URL, form.data, headers); 

yield return www; 
Debug.Log (www.uploadProgress); 

if (www.error == null) 
{ 
    Debug.Log("WWW Ok!: " + www.text); 
} else { 
    Debug.Log("WWW Error: "+ www.error); 
}  

    } 

} 

PHP XAMP:

<?php 


$connect = mysqli_connect("localhost","root","", "localdb"); 

$filename = file_get_contents('php://input'); 

$data = file_get_contents($filename); 

$array = json_decode($data, true); 

foreach ($array as $row) 
{ 
$sql = "INSERT INTO localtable (username, password) VALUES('".$row[username]."','".$row[password]."')";  
mysqli_query($connect, $sql); 
} 

echo $data; 

?> 

Unityのログオン:

WWW Ok!:
Warning: file_get_contents(username=testuser&password=testpass): failed to open stream: No such file or directory in C:\xampp\htdocs\php\page.php on line 8

Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\php\page.php on line 12
JSON data added. UnityEngine.Debug:Log(Object) c__Iterator3:MoveNext() (at Assets/Scripts/JSON.cs:31) UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)

PHPエラー:

Warning: file_get_contents(): Filename cannot be empty in C:\xampp\htdocs\php\page.php on line 8

Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\php\page.php on line 12 JSON data added.

編集1:エラーなし、データなし。

<?php 
$data = json_decode(file_get_contents('php://input'), true); 
print_r($data); 
echo $data["username"]; 
echo $data["password"]; 
?> 

編集2:

<?php 
    $data = file_get_contents('php://input');// $data == "username=testuser&password=testpass" 
    parse_str($data, $result); 
    echo $result["username"]; // "testuser" 
    echo " "; 
    echo $result["password"]; // "testpass" 
    echo " "; 
?> 

Unity show data: testuser testpass

PHP show:

Notice: Undefined variable: username in C:\xampp\htdocs\php\page.php on line 5

Notice: Undefined variable: password in C:\xampp\htdocs\php\page.php on line 7

編集3:最終的なPHPコードは、MySQL

<?php 
    $data = file_get_contents('php://input');// $data == "username=testuser&password=testpass" 
    parse_str($data, $result); 
    echo $result["username"]; // "testuser" 
    echo " "; 
    echo $result["password"]; // "testpass" 
    echo " "; 

    $connect = mysqli_connect("localhost","admin","123456", "localdb"); 
    $array = json_decode($data, true); 

    $sql = "INSERT INTO localtable (username, password) VALUES('".$result["password"]."','".$result["password"]."')";  
    mysqli_query($connect, $sql); 

    echo " "; 

    echo $queryResult = mysqli_query($connect, $sql);//Return 1 
?> 
+0

エラーは何ですか? Mysql空のレコードの – zwcloud

+0

が追加されました。 –

+0

'mysqli_query'が返す値は何ですか? – zwcloud

答えて

0
$filename = file_get_contents('php://input'); 

$data = file_get_contents($filename); 

$filenameに任意のレコードを追加していないがあなたから得たフォームデータでありますUnity3Dクライアントこれはファイルパスではなく、JSON文字列でもありません。それは単なる文字列です。あなたはではない jsonを送る。

は、ログを参照してください、ユーザー名とパスワードを取得するために

username=testuser&password=testpass 

使用parse_strです。

<?php 
$connect = mysqli_connect("localhost","root","", "localdb"); 
$data = file_get_contents('php://input');// $data == "username=testuser&password=testpass" 
$result = null; 
parse_str($data, $result);  
echo $result["username"]; // "testuser" 
echo $result["password"]; // "testpass" 

if ($stmt = $mysqli_prepare("INSERT INTO localtable (username, password) VALUES(?,?)")) { 
    /* bind parameters for markers */ 
    mysqli_stmt_bind_param($stmt, "username", $result["username"]); 
    mysqli_stmt_bind_param($stmt, "password", $result["password"]); 

    /* execute query */ 
    mysqli_stmt_execute($stmt); 

    /* close statement */ 
    mysqli_stmt_close($stmt); 
} 

?> 
+0

私はPHPの知識がないので、何をしなければならないのか分かりません。私はここの開発者が助けてくれることを願っています –

+0

私はそれらを置く必要がありますか?どのように使用するのですか?チュートリアルのリンクは私を助けなかった。 –

+0

最後に機能しました。ありがとう。 –

関連する問題