AS3,MySQL的PHP连接 [英] as3, MySQL PHP connection
问题描述
我试图与数据库连接我的闪存项目。但是,我希望能够从具有3个字段(姓名,得分和日期)数据库提交和检索数据。我的问题是,如果我点击提交按钮,当我去检查在数据库中,我只看到0的比分意味着什么都不提交。有人可以帮助我在此。 TQ 这是我的编码闪光:
VAR STR:字符串=;
VAR myScore的= 0;
btn_submit.addEventListener(MouseEvent.CLICK,提交);
提交功能(E:的MouseEvent)
{
VAR myrequest:的URLRequest =新的URLRequest(http://127.0.0.1/Y/sendscore.php);
myrequest.method = URLRequestMethod.POST;
VAR变量:使用URLVariables =新的URLVariables();
variables.name =海峡;
variables.score = myScore的;
myrequest.data =变量;
VAR装载机:的URLLoader =新的URLLoader();
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
loader.addEventListener(引发Event.COMPLETE,dataOnLoad);
loader.load(myrequest);
}
功能dataOnLoad(EVT:事件)
{
MC_success.alpha = 100;
//状态是从后端通过自定义标记
}
我的PHP code用于发送数据;
< PHP
//包含数据库连接的详细信息
require_once('config.php文件');
//连接到MySQL服务器
$链接=的mysql_connect(DB_HOST,DB_USER,DB_PASSWORD);
如果(!$链接){
死亡(无法连接到服务器:mysql_error());
}
//选择数据库
$分贝= mysql_select_db(DB_DATABASE);
如果(!$ DB){
死亡(无法选择数据库);
}
//函数来净化从表单中接收到的值。 prevents SQL注入
功能清洁($海峡){
$海峡= @trim($海峡);
如果(get_magic_quotes_gpc()){
$海峡=函数stripslashes($海峡);
}
返回mysql_real_escape_string($海峡);
}
//消毒POST值
$名称=清洁($ _ POST ['名称']);
$得分=清洁($ _ POST ['得分']);
$的currentdate =日期(Y / M / D);
//创建INSERT查询
$ QRY =INSERT INTO高分(用户,得分,日期)VALUES('$名字','$得分','$的currentdate');
$结果= @mysql_query($ QRY);
回声的写作=确定;
出口();
则mysql_close();
?>
我的PHP code检索数据;
< PHP
//包含数据库连接的详细信息
require_once('config.php文件');
//连接到MySQL服务器
$链接=的mysql_connect(DB_HOST,DB_USER,DB_PASSWORD);
如果(!$链接){
死亡(无法连接到服务器:mysql_error());
}
//选择数据库
$分贝= mysql_select_db(DB_DATABASE);
如果(!$ DB){
死亡(无法选择数据库);
}
//创建INSERT查询
$ QRY =SELECT * FROM榜ORDER BY得分ASC;
$结果= @mysql_query($ QRY);
$ NUM = mysql_numrows($结果);
如果($ num个> 10)
{$ NUM = 10;}
//回声的写作=确定;
回声< B><中心>的最佳时间:LT; /中心>< / B>< BR /><表>;
$ i = 0;
$ I2 = 1;
而($ I< $ NUM){
$名= mysql_result($结果,$ I,用户);
$时间= mysql_result($结果,$ I,分数);
$日期= mysql_result($结果,$一,日);
回声< TR>< TD ALIGN =左边VALIGN =顶部> $ I2< / TD>< TD ALIGN =中心VALIGN =顶部>< B> $名称和LT; / B> |。$比分| $日期和LT ; / TD>< / TR>< TR>< TD合并单元格= 2>< HR>< / TD>< / TR>中;
$ I2 ++;
$ I ++;
}
回声< /表>;
// $ urlRefresh =scores.php;
//标题(刷新:15; URL = \。$ urlRefresh\);
出口();
则mysql_close();
?>
除非你已经错过了一些片code,从而将比分改变时,你实际上宣告 VAR myScore中= 0
就在你的AS3 code座的顶部。
的第一件事是将它修改成 100
,然后运行脚本,看看有没有修改的得分变量是越来越提交。如果是,那么一切工作正常,因为它应该。
更新:
您已经改变了您的问题,并希望能够加载数据。你已经有通过 loader.addEventListener(引发Event.COMPLETE,dataOnLoad)
设置了此功能。你只需要抓住你的PHP脚本正在发回的数据。这可以通过在 dataOnLoad
函数的 EVT
参数来访问:
函数dataOnLoad(EVT:事件):无效{
跟踪(数据提交完整的);
VAR returnVars = evt.target.data;
跟踪(***********************);
为(在returnVars VAR myVars){
跟踪(myVars +:+ returnVars [myVars]);
}
跟踪(***********************);
}
更新2:
您已经请求帮助从数据库加载你的分数。当你已经有一个检索此从数据库的PHP文件(假设它被称为 scores.php
),M你只需要在Flash中的函数加载它。
您已经具备了基本功能到位,利用的URLLoader
和事件侦听器。你只需要这些应用到一个简单的负载:
btn_scores.addEventListener(MouseEvent.CLICK,loadScores);
功能loadScores(E:的MouseEvent):无效{
VAR fileLoader:的URLLoader =新的URLLoader();
fileLoader.addEventListener(引发Event.COMPLETE,scoresLoadComplete);
fileLoader.load(新的URLRequest(scores.php));
}
功能scoresLoadComplete(EVT:事件):无效{
尝试 {
VAR returnVars = evt.target.data;
跟踪(***********************);
为(在returnVars VAR myVars){
跟踪(myVars +:+ returnVars [myVars]);
}
跟踪(***********************);
}赶上(ERR:错误){
跟踪(无法解析加载文件:+ err.message);
}
}
注意你的PHP文件目前正在返回结果的HTML表格。这不会表现在Flash中;你会好得多通过发送键/值对和分析他们或分数只是一个基本的HTML列表。
am trying to connect my flash project with database. However, i want to be able to submit and retrieve data from database having 3 fields (name, score and date). My problem is that if I click submit button and when i go to check in database i only see 0 score meaning nothing is submitted. Can someone help me on this. Tq Here is my coding for flash:
var str:String = "";
var myscore = 0;
btn_submit.addEventListener(MouseEvent.CLICK, submitted);
function submitted(e:MouseEvent)
{
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;
variables.score = myscore;
myrequest.data = variables;
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;
//status is a custom flag passed from back-end
}
MY PHP CODE FOR SENDING DATA;
<?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");
}
//Function to sanitize values received from the form. Prevents SQL injection
function clean($str) {
$str = @trim($str);
if(get_magic_quotes_gpc()) {
$str = stripslashes($str);
}
return mysql_real_escape_string($str);
}
//Sanitize the POST values
$name = clean($_POST['name']);
$score = clean($_POST['score']);
$currentdate = date("Y/m/d");
//Create INSERT query
$qry = "INSERT INTO highscores(user, score, date) VALUES('$name','$score','$currentdate')";
$result = @mysql_query($qry);
echo "writing=Ok";
exit();
mysql_close();
?>
MY PHP CODE TO RETRIEVE DATA;
<?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 ASC";
$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>";
$i=0;
$i2=1;
while ($i < $num) {
$name=mysql_result($result,$i,"user");
$time=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> | $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();
?>
Unless you've missed out some piece of code whereby the score is changed, you're actually declaring var myscore = 0
right at the top of your AS3 code block.
The first thing would be to change that to 100
, then run you script and see if that modified score variable is getting submitted. If it is, then everything is working as it should.
Update:
You've changed your question, and you want to be able to load data. You already have a function set up for this via loader.addEventListener(Event.COMPLETE, dataOnLoad)
. You just need to grab the data your PHP script is sending back. This can be accessed via your evt
parameter in the dataOnLoad
function:
function dataOnLoad(evt:Event):void {
trace("Data submission complete");
var returnVars = evt.target.data;
trace("***********************");
for (var myVars in returnVars) {
trace(myVars + ": " + returnVars[myVars]);
}
trace("***********************");
}
Update 2:
You've requested help with loading your scores from the database. As you already have a PHP file that retrieves this from the database (let's assume it's called scores.php
),m you just need a function in Flash to load it.
You already have the basic functions in place, making use of URLLoader
and Event Listeners. You just need these to apply to a straightforward load:
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("scores.php"));
}
function scoresLoadComplete(evt:Event):void {
try {
var returnVars = evt.target.data;
trace("***********************");
for (var myVars in returnVars) {
trace(myVars + ": " + returnVars[myVars]);
}
trace("***********************");
} catch (err:Error) {
trace("Can't parse loaded file: " + err.message);
}
}
Note that your PHP file currently returns an HTML table of results. This won't behave in Flash; you'd be much better off sending through key/value pairs and parsing them or just a basic HTML list of scores.
这篇关于AS3,MySQL的PHP连接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!