从php获取数据到c#脚本

时间:2016-04-21 13:00:57

标签: c# php postgresql unity3d

我有一个unity3d c#脚本用于从php文件中获取数据。

Unity C#文件:

using UnityEngine;
using System.Collections;

public class FrmPhp : MonoBehaviour {

    // Use this for initialization
    void Start () {
        string url = "http://localhost/abc/PgComm.php";
        WWW www = new WWW(url);
        StartCoroutine(WaitForRequest(www));
    }
    IEnumerator WaitForRequest(WWW www)
    {
        yield return www;
        // check for errors
        if (www.error == null)
        {
            Debug.Log("Text : "www.text);
            Debug.Log("DownLoad Bytes: "www.bytesDownloaded.ToString());
        } else {
            Debug.Log("WWW Error: "+ www.error);
        }       
    }

    // Update is called once per frame
    void Update () {

    }
}

PHP文件

<html> 
    <body> 
        <table name="mytable" border="0" cellspacing="0" cellpadding="0"> 
            <tr> 
                <td> 
                    Friend ID 
                </td> 

            </tr> 
        <?php 
        $db = pg_connect('host=localhost dbname=MyDB user=postgres password=xyz'); 

        $query = "SELECT pk FROM Table1"; 

        $result = pg_query($query); 
        //printf ("<tr><td>%s</td>", $result); 

        if (!$result) { 
            echo "Problem with query " . $query . "<br/>"; 
            echo pg_last_error(); 
            exit(); 
        } 

        while($myrow = pg_fetch_assoc($result)) { 
            printf ("<tr><td>%s</td>", $myrow['pk']); 

        } 
        ?> 
        </table> 
    </body> 
</html>

我在团结中得到的是

Text :
DownLoad Bytes: 110

任何想法如何从php获取数据。

编辑c#代码:

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.Experimental.Networking;

public class FrmPhp : MonoBehaviour {
    public Text txt;
    string url = "http://192.100.233.222/abc/Hello.php";
    byte[] results;
    //byte results1 = 0x00;
    // Use this for initialization
    void Start () {
        StartCoroutine(GetText());
    }

    IEnumerator GetText() 
    {
        UnityWebRequest www = UnityWebRequest.Get(url);
        yield return www.Send();

        if(www.isError) {
            Debug.Log(www.error);
            txt.text = www.error;
        }
        else {
            // Show results as text
            //results1 = 0x01;
            Debug.Log(www.downloadHandler.text);
            txt.text = www.downloadHandler.text;
        }
    }
    // Update is called once per frame
    void Update () {

    }
}

1 个答案:

答案 0 :(得分:1)

啊,啊,vikky,

1)我对C#不是很熟悉,但是我要做的是帮助C#开发人员以适当的格式向他发送数据。例如XML或JSON,而不是表。

所以我试试JSON:

<?php
$db = pg_connect('host=localhost dbname=MyDB user=postgres password=xyz'); 
$query = "SELECT pk FROM Table1"; 
$result = pg_query($query); 
//printf ("<tr><td>%s</td>", $result); 
if (!$result) { 
    echo "Problem with query " . $query . "<br/>"; 
    echo pg_last_error(); 
    exit(); 
} 
$return_arr = array();
while($myrow = pg_fetch_assoc($result)) { 
    array_push($return_arr, $myrow);
}
echo json_encode($return_arr);

2)如果你坚持让表使用正确的表格HTML 使用printf ("<tr><td>%s</td></tr>", $myrow['pk']); 而不是printf ("<tr><td>%s</td>", $myrow['pk']);

3)使用xml你可能会try something like this

4)您可以使用C#的远程连接直接连接到Postgre数据库(如果这是您的选项)this

希望有所帮助

PS。 Decoding JSON in C#也可能派上用场