我在使用 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
包含此数据库的连接和表详细信息
游戏本身应该包含gameName
和employeeID
变量,但为了测试我在这里硬编码。
我将游戏,html和相关文件上传到同一个站点,当我播放它时,我的数据库通过添加gamename和employeeID详细信息进行更新,但播放器和得分字段是空白的。
我尝试使用方法GET
,数据格式TEXT
等不同版本。
我一直在盯着这个并且研究这个问题已经超过1周了......如果有人在那里可以告诉我我做错了什么我会很高兴收到你的来信!
我对于梳理Flash,PHP和SQL相对较新,所以如果我错过了一些明显的东西,请原谅我!
再次感谢,
杰
答案 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);
}