如何将变量从 PHP 传递到 Flash (ActionScript 3)

How to pass variables from PHP to Flash (ActionScript 3)

我需要从 MySql 数据库中获取 select 游戏编号并将其传递给 Flash 游戏 (ActionScript 3)。

现在我有 AS3 代码:

function getVars(e:Event):void{
    var req:URLRequest = new URLRequest("top.php");
    var loader:URLLoader = new URLLoader(req);
    loader.dataFormat = URLLoaderDataFormat.VARIABLES;
    loader.addEventListener(Event.COMPLETE, getVarComplete);
}

function getVarComplete(e:Event):void{
    var gameNr.text = e.target.data;
}

这是 PHP 代码(我不知道 selected 行如何传递给变量并将其发送到 flash)

$id = $_SESSION['id']; 
$mysqli = new mysqli("localhost","xxx","xxx","xxx");

$query = "SELECT GameNr 
          FROM   Game 
          WHERE FBId = '". mysql_real_escape_string($id) ."' 
          ORDER BY PlayTime DESC LIMIT 1";

更新:

如果我使用以下 PHP:

<?php 
    session_start();
    $id = $_SESSION['id']; 

    $mysqli = new mysqli("localhost","xx","xx","xx");

    $query = "SELECT GameNr 
              FROM   Game 
              WHERE FBId = '". mysql_real_escape_string($id) ."'              
              ORDER BY PlayTime DESC LIMIT 1";
if (!$mysqli->set_charset("utf8")) {
    printf("Error loading character set utf8: %s\n", $mysqli->error);
} 

    if ($result = $mysqli->query($query)) {
        while ($row = $result->fetch_assoc()) {
           echo $row["GameNr"];
        }       
        $result->free();
    }
    $mysqli->close();
?>

www.myhost.com/top.php 返回正确值 NA==


如果我使用以下 AS3 代码:

function onVarsLoaded(e:Event) {
    var msg:String = "Communication with the server was successful.\n\n";
    msg += "foo -> "+e.target.vars.foo+"\n";
    trace(msg);
}

它返回我:foo -> undefined

如果我改变这个

msg += "foo -> "+e.target.vars.foo+"\n";

msg += "foo -> "+e.target.vars+"\n";

它返回错误的值:foo -> NA=%3D

PHP 除了你的代码外还有代码

 $mysqli->real_query($query);
 $res = $mysqli->use_result();
 while ($row = $res->fetch_assoc()) {
     echo $row['GameNr'];
}

请检查 PHP 脚本所需数据的格式。目前 php 代码会给你 GameNr 作为文本的结果。

希望对您有所帮助!

试试这个:

AS3:

import net.kaegi.loaders.VarLoader;
var vl:VarLoader;

sendBtn.addEventListener(MouseEvent.CLICK,sendBtnHandler);
function sendBtnHandler(e:MouseEvent) {
    // Variables sent by POST-Method:
    var varObj:Object = {};
    varObj.textinput0 = escape(textinput0.text);
    varObj.textinput1 = escape(textinput1.text);

    vl = new VarLoader("http://yourserver.com/landing.php?foo=foo", varObj);
    vl.addEventListener(Event.COMPLETE, onVarsLoaded);
    vl.addEventListener(Event.CANCEL, onVarsCancel);
}

function onVarsLoaded(e:Event) {
    var msg:String = "Communication with the server was successful.\n\n";
    msg += "foo -> "+e.target.vars.foo+"\n";
    tf_servermsg.textColor = 0x009900;
    tf_servermsg.text = msg;
}

function onVarsCancel(e:Event) {
    tf_servermsg.textColor = 0x990000;
    tf_servermsg.text = e.target.errormsg;
}

PHP

// handle coming get
$foo = $_GET["foo"];

// handle coming post from flash
$textinput0 = $_POST["textinput0"];
$textinput1 = $_POST["textinput1"];

// send it to flash
$yourdata = "hello world"; // your mysql data here


echo $yourdata;