FLASH、PHP、MySQL连接

FLASH、PHP、MySQL连接,php,mysql,flash,Php,Mysql,Flash,我正在创建我的flash项目,该项目接受4个变量,即姓名、学校、分数和日期。不过FLASH、PHP和MYSQL之间的连接很好,我可以通过FLASH将数据发送到MYSQL数据库,没有问题。现在我的问题是,我无法检索和查看返回到flash的数据。我创建了一个名为highscores的文本字段,用于在flash中检索数据。我确信我检索的php代码很好,因为我可以在浏览器中查看数据。那么有没有办法在flash中检索我的数据呢?以下是我对flash的编码: str.text = ""; mysc

我正在创建我的flash项目,该项目接受4个变量,即姓名、学校、分数和日期。不过FLASH、PHP和MYSQL之间的连接很好,我可以通过FLASH将数据发送到MYSQL数据库,没有问题。现在我的问题是,我无法检索和查看返回到flash的数据。我创建了一个名为highscores的文本字段,用于在flash中检索数据。我确信我检索的php代码很好,因为我可以在浏览器中查看数据。那么有没有办法在flash中检索我的数据呢?以下是我对flash的编码:

 str.text = "";
    myschool.text = "";
    myscore.text = "";

    //Here i declared a textfield named highscores
    //var text:String = highscores.text;


    btn_submit.addEventListener(MouseEvent.CLICK, submitted);

    function submitted(e:MouseEvent)
    {

    if(!str.length) {
        status_txt.text = "Please enter your name";
    } 
    else if (!myschool.length) {
       status_txt.text = "Please enter your school name";
    }
    else if (!myscore.length) {
       status_txt.text = "Please enter your score";
    }
    else {
        var myrequest:URLRequest = new URLRequest("http://127.0.0.1/Y/sendscore.php");
    myrequest.method = URLRequestMethod.POST;

    var variables:URLVariables = new URLVariables();
    variables.name = str.text;
    variables.school = myschool.text;
    variables.score = myscore.text;

    myrequest.data = variables;
    var loader:URLLoader = new URLLoader();
    loader.dataFormat = URLLoaderDataFormat.VARIABLES;

    loader.addEventListener(Event.COMPLETE, dataOnLoad);
    loader.load(myrequest);
    }
    }

    function dataOnLoad(evt:Event)
    {

        trace("Data submission complete");
        var returnVars = evt.target.data;

        trace("***********************");

        for (var myVars in returnVars) {
            trace(myVars + ": " + returnVars[myVars]);
        }

        trace("***********************");

    MC_success.alpha=100;
    //status is a custom flag passed from back-end 
    }

    btn_scores.addEventListener(MouseEvent.CLICK, loadScores);

    function loadScores(e:MouseEvent):void {
        var fileLoader:URLLoader = new URLLoader();
        fileLoader.addEventListener(Event.COMPLETE, scoresLoadComplete);

        fileLoader.load(new URLRequest("http://127.0.0.1/Y/scores.php"));


    }

    function scoresLoadComplete(evt:Event):void {
        try {

            var returnVars = evt.target.data;
            highscores.htmlText = returnVars;
            trace("Data retrieved successfully");
            for (var myVars in returnVars) {
                trace(myVars + ": " + returnVars[myVars]);
            }

            trace("***********************");
            //highscores.htmlText = returnVars.scores;
        } catch (err:Error) {
            trace("Can't parse loaded file: " + err.message);
        }



    }
下面是我检索数据的PHP代码

<?php   
    //Include database connection details
    require_once('config.php');

        //Connect to mysql server
    $link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
    if(!$link) {
        die('Failed to connect to server: ' . mysql_error());
    }

    //Select database
    $db = mysql_select_db(DB_DATABASE);
    if(!$db) {
        die("Unable to select database");
    }

    //Create INSERT query
    $qry = "SELECT * FROM highscores ORDER BY score DESC LIMIT 5";
    $result = @mysql_query($qry);
        $num=mysql_numrows($result);
if($num > 10)
{$num = 10;}
//echo "writing=Ok";

echo "<b><center>Best Times:</center></b><br /><table>";
//echo "scores=<b><center>Best Times:</center></b><br /><table>";

$i=0;
$i2=1;
while ($i < $num) {

$name=mysql_result($result,$i,"user");
$school=mysql_result($result,$i,"school");
$score=mysql_result($result,$i,"score");
$date=mysql_result($result,$i,"date");


echo "<tr><td align=left valign=top>$i2.</td><td align=center valign=top><b>$name</b> <b> | $school</b> | $score | $date</td></tr><tr><td colspan=2><hr></td></tr>";
$i2++;
$i++;
}
echo "</table>";
//$urlRefresh = "scores.php";
//header("Refresh: 15; URL=\"" . $urlRefresh . "\"");

exit();
mysql_close();


?>

正如我在文章中提到的,Flash中的文本字段不能很好地处理HTML表格

在PHP文件中,需要将第一个和最后一个
echo
之间的所有内容替换为以下内容:

echo "scores=<b>Best Times:</b><br />";

$i = 0;
$i2 = 1;

while ($i < $num) {
    $name = mysql_result($result,$i,"user");
    $school = mysql_result($result,$i,"school");
    $score = mysql_result($result,$i,"score");
    $date = mysql_result($result,$i,"date");

    echo "$i2. <b>$name</b> | <b>$school</b> | $score | $date <br />";

    $i2++;
    $i++;
}
为此:

fileLoader.load(new URLRequest("http://127.0.0.1/Y/scores.php?rand=" + Math.random() * 999999));
所做的只是在加载的末尾添加一个随机数作为“垃圾”变量
rand
。Flash会在加载不同的文件时看到这一点,因此会发出新的请求,而不是从缓存中提取它


除此之外,您的文件中的所有内容似乎都正常运行

dataOnLoad
是否调用过它?@ethrbunny是的,我在函数dataOnLoad(evt:Event)中调用过它。。。。或者你可以解释一下。tqYou声明了它-我想知道POST回调是否曾经发生过。那么您能告诉我一种方法来引用我上面的flash代码吗?我不是优秀的程序员。@ethrbunyi试图更改行highscores.htmlText=returnVars.score;to highscores.text=returnVars;但它会显示在php中找到的html设置的所有内容以及数据。有没有办法修复它,以便在flash中只显示数据?我尝试了这个方法,它在浏览器中显示得很好,但在flash中再次出现相同的错误无法解析加载的文件:错误#1069:字符串上找不到属性分数,并且没有默认值。顺便问一下,可变分数是多少@indextwo@mchucha对不起,我弄错了-您应该使用
returnVars.scores
-复数,而不是单数。正如我提到的,在变量中包含该值意味着您可以向PHP输出中添加其他变量。如果您愿意,您可以将其取出,然后将
returnVars
转储到您的文本字段中。如果这样做有效,请记住从您的
回音中删除
分数=
。我尝试了复数形式,但在取出后没有。分数和从回音中删除后,它会在文本字段“连接确定最佳时间:”中显示此内容:但当时没有检索到任何数据@indextwo@mchucha只需确认:您的文本字段在Flash中是否设置为多行?默认情况下,它们不是。这听起来像是在加载您的信息,但在
最佳时间之后没有显示任何内容:
,因为后面有一行新行。是的,我将其设置为动态文本字段和多行@indextwo。顺便问一句,有没有一种方法我可以把我的文件发送给你,这样你就可以仔细查看它们,例如电子邮件Tq?
fileLoader.load(new URLRequest("http://127.0.0.1/Y/scores.php?rand=" + Math.random() * 999999));