作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用 SQL 数据库将分数从 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 和相关文件上传到同一网站,当我玩游戏时,我的数据库会通过添加游戏名和员工 ID 详细信息进行更新,但玩家和得分字段为空。
我尝试了不同的版本,使用方法 GET
、数据格式 TEXT
等。
我已经关注这个问题并研究这个问题超过 1 周了......如果有人能告诉我我做错了什么,我会很高兴收到你的来信!
我对 Flash、PHP 和 SQL 的结合还比较陌生,所以如果我遗漏了一些明显的东西,请原谅!
再次感谢,
周杰伦
最佳答案
试试这个:
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 已被弃用。
关于php - 将分数从 AS3 提交到 PHP/SQL - #Error 2101,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26422299/
我是一名优秀的程序员,十分优秀!