2013-04-11 70 views
0

现在,我已经将我的高分评分板作为一个SQL数据库,我可以通过Unity通过一些PHP脚本访问该数据库。我的原始评分板允许我存储用户名和他们的分数,但我试图添加额外的字段,如准确性等。但是,我的新字段没有显示或传递到我的服务器。添加并显示来自高分计划板的新统计信息

我有两个名为display.php和addscrore.php的PHP脚本(我会修正拼写错误)。看起来Display.php的类似如下:

<?php 
// Send variables for the MySQL database class. 
$database = mysql_connect('localhost', 'dark', 'dark') or die('Could not connect: ' . mysql_error()); 
mysql_select_db('dark') or die('Could not select database'); 

$query = "SELECT * FROM `scores` ORDER by `score` DESC LIMIT 5"; 
$result = mysql_query($query) or die('Query failed: ' . mysql_error()); 

$num_results = mysql_num_rows($result); 

for($i = 0; $i < $num_results; $i++) 
{ 
    $row = mysql_fetch_array($result); 
    echo $row['name'] . "\t" . $row['score'] . "\t" . $row['accuracy'] . "\n"; 
} 
?> 

Addscrore.php看起来是这样的:

<?php 
     $db = mysql_connect('localhost', 'dark', 'dark') or die('Could not connect: ' . mysql_error()); 
     mysql_select_db('dark') or die('Could not select database'); 

     // Strings must be escaped to prevent SQL injection attack. 
     $name = mysql_real_escape_string($_GET['name'], $db); 
     $score = mysql_real_escape_string($_GET['score'], $db); 
    $accuracy = mysql_real_escape_string($_GET['accuracy'], $db); 
     $hash = $_GET['hash']; 

     $secretKey="mySecretKey"; # Change this value to match the value stored in the client javascript below 

     $real_hash = md5($name . $score . $accuracy . $secretKey); 
     if($real_hash == $hash) 
    { 
      // Send variables for the MySQL database class. 
      $query = "insert into scores values (NULL, '$name', '$score', '$accuracy');"; 
      $result = mysql_query($query) or die('Query failed: ' . mysql_error()); 
     } 
?> 

然后,在我的团结节目,我做了我的HSController类用下面的代码:

using UnityEngine; 
using System.Collections; 

public class HSController : MonoBehaviour 
{ 
private string secretKey = "mySecretKey"; // Edit this value and make sure it's the same as the one stored on the server 
public string addScoreURL = "/score/addscrore.php?"; //be sure to add a ? to your url 
public string highscoreURL = "highscoretable/display.php"; 

void Start() 
{ 


    StartCoroutine(GetScores()); 
} 

    // remember to use StartCoroutine when calling this function! 
    public IEnumerator PostScores(string name, int score, float accuracy) 
    { 
     //This connects to a server side php script that will add the name and score to a MySQL DB. 
     // Supply it with a string representing the players name and the players score. 
     string hash = MD5.Md5Sum(name + score + accuracy + secretKey); 

     string post_url = addScoreURL + "name=" + WWW.EscapeURL(name) + "&score=" + score + "&accuracy" + accuracy + "&hash=" + hash; 

     // Post the URL to the site and create a download object to get the result. 
     WWW hs_post = new WWW(post_url); 
     yield return hs_post; // Wait until the download is done 

     if (hs_post.error != null) 
     { 
      print("There was an error posting the high score: " + hs_post.error); 
     } 
    } 

    // Get the scores from the MySQL DB to display in a GUIText. 
    // remember to use StartCoroutine when calling this function! 
    public IEnumerator GetScores() 
    { 
     gameObject.guiText.text = "Loading Scores"; 
     WWW hs_get = new WWW(highscoreURL); 
     yield return hs_get; 

     if (hs_get.error != null) 
     { 
      print("There was an error getting the high score: " + hs_get.error); 
     } 
     else 
     { 
      gameObject.guiText.text = hs_get.text; // this is a GUIText that will display the scores in game. 
     } 


    } 
    } 

然后,当我想向我的表中添加一些新的信息时,我会调用以下代码行:

string name = "Rawr"; 
    int score = 1325; 
    float accuracy = 40.0f; 
    HSController _test; 


    // Use this for initialization 
    void Start() 
    { 
     _test = new HSController(); 
     StartCoroutine(_test.PostScores(name, score,accuracy)); 
    } 

但是,所有这些,我的新领域,准确性,仍然没有被显示。任何人都可以看到我做错了什么,以及为什么当我打电话时,我的新字段没有显示?

回答

1

可能根本不是原因,但在C#中,当您构建帖子URL时,您缺少等号"&accuracy"