将AS3中的分数提交到PHP / SQL - #Error 2101

时间:2014-10-17 09:45:54

标签: php mysql actionscript-3 flash leaderboard

我在使用 Flash数据库 Flash CC AS3游戏的分数发布到 PHP 页面时出现问题。
我在输出窗口中收到ERROR #2101条消息 经过大量时间搜索此问题后,我建议检查PHP是否是问题。

我创建了一个非常简单的Flash文件,代码(我已经在下面替换了我的实际网站地址)是:

import flash.events.MouseEvent;
import flash.net.URLRequest;
import flash.net.URLVariables;
import flash.net.URLLoader;
import flash.events.Event;

var userName = "Jamie";
var newScore = 1300123;

btn_submit.addEventListener(MouseEvent.CLICK, submitted);

function submitted(e:MouseEvent) {
    var myrequest:URLRequest = new URLRequest("http://mysiteaddresshere.com/test_scores.php");
    myrequest.method = URLRequestMethod.POST;
    var variables:URLVariables = new URLVariables();
    variables.player = userName;
    variables.score = newScore;
    var loader:URLLoader = new URLLoader();
    loader.dataFormat = URLLoaderDataFormat.VARIABLES;
    loader.addEventListener(Event.COMPLETE, dataOnLoad);
    loader.load(myrequest);
}

function dataOnLoad(evt:Event) {
    MC_success.alpha = 100;
}

PHP代码如下:

<?php

include("db.php");

// Connect to the MySQL server
$link = mysql_connect($host, $user, $pass);
if(!$link) {
    die('Failed to connect to server.'.mysql_error());
}

$db = mysql_select_db($database);
if(!$db) {
    die("unable to select database");
}

$gameName = "ietul";
$employeeID = 123456;
$player = $_POST['userName'];
$score = $_POST['newScore'];

//Create INSERT query
$qry = "INSERT INTO highScore (gameName,employeeID,player,score) VALUES('$gameName','$employeeID','$player','$score')";
$result = @mysql_query($qry);
echo "writing = OK";
exit();
mysql_close();

?>

include包含此数据库的连接和表详细信息 游戏本身应该包含gameNameemployeeID变量,但为了测试我在这里硬编码。
我将游戏,html和相关文件上传到同一个站点,当我播放它时,我的数据库通过添加gamename和employeeID详细信息进行更新,但播放器和得分字段是空白的。

我尝试使用方法GET,数据格式TEXT等不同版本。

我一直在盯着这个并且研究这个问题已经超过1周了......如果有人在那里可以告诉我我做错了什么我会很高兴收到你的来信!

我对于梳理Flash,PHP和SQL相对较新,所以如果我错过了一些明显的东西,请原谅我!

再次感谢,

2 个答案:

答案 0 :(得分:1)

试试这个:

AS3代码:

btn_submit.addEventListener(MouseEvent.CLICK, submit_on_Press)

function submit_on_Press(e:MouseEvent) {

    var variables:URLVariables = new URLVariables()
        variables.player = 'player_name'
        variables.score = 1526

    var request:URLRequest = new URLRequest('http://127.0.0.1/score/score.php')
        request.method = URLRequestMethod.POST
        request.data = variables

    var loader:URLLoader = new URLLoader()
        loader.dataFormat = URLLoaderDataFormat.VARIABLES
        loader.addEventListener(Event.COMPLETE, data_on_Load)
        loader.load(request)

}

function data_on_Load(e:Event) {
    trace(e.target.data.writing)
}

PHP代码:

<?php

    if(count($_POST) != 2) die();

    $player = trim($_POST['player']);
    $score = intval($_POST['score']);

    $link = mysqli_connect('127.0.0.1', 'root', '', 'test') or die('Error ' . mysqli_error($link)); 

    $query = "INSERT INTO test(player, score) Values('".$player."', ".$score.")";

    $result = $link->query($query);
    $link->close();

    echo 'writing='.($result ? 'ok' : 'error');

?>

对于PHP,我建议您使用 mysqli ,因为不推荐使用mysql。

答案 1 :(得分:0)

您需要发送变量

myrequest.data = variables; //<------- THIS

将此添加到您的代码中

function submitted(e:MouseEvent) {
var myrequest:URLRequest = new URLRequest("http://mysiteaddresshere.com/test_scores.php");
myrequest.method = URLRequestMethod.POST;
var variables:URLVariables = new URLVariables();
variables.player = userName;
variables.score = newScore;
 myrequest.data = variables; //<------- THIS
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
loader.addEventListener(Event.COMPLETE, dataOnLoad);
loader.load(myrequest);

}