Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
as3,MySQL-PHP连接_Php_Mysql_Actionscript 3 - Fatal编程技术网

as3,MySQL-PHP连接

as3,MySQL-PHP连接,php,mysql,actionscript-3,Php,Mysql,Actionscript 3,我正在尝试将我的flash项目与数据库连接起来。然而,我希望能够从包含3个字段(名称、分数和日期)的数据库中提交和检索数据。我的问题是,若我点击提交按钮,当我去签入数据库时,我只看到0分,这意味着并没有提交任何内容。有人能帮我吗。Tq 以下是我对flash的编码: var str:String = ""; var myscore = 0; btn_submit.addEventListener(MouseEvent.CLICK, submitted); function submitted(e

我正在尝试将我的flash项目与数据库连接起来。然而,我希望能够从包含3个字段(名称、分数和日期)的数据库中提交和检索数据。我的问题是,若我点击提交按钮,当我去签入数据库时,我只看到0分,这意味着并没有提交任何内容。有人能帮我吗。Tq 以下是我对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 
}
我的PHP代码发送数据

<?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();  

?>

除非您遗漏了某段代码,从而更改了分数,否则您实际上是在AS3代码块的顶部声明了
var myscore=0

第一件事是将其更改为
100
,然后运行脚本,查看修改后的分数变量是否已提交。如果是的话,那么一切都正常运转

更新:

您已经更改了问题,希望能够加载数据。您已经通过
loader.addEventListener(Event.COMPLETE,dataOnLoad)
为此设置了一个函数。您只需要获取PHP脚本发送回的数据。这可以通过
dataOnLoad
功能中的
evt
参数访问:

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("***********************");
}
更新2:

您已请求帮助从数据库加载分数。由于您已经有了一个从数据库中检索该文件的PHP文件(假设它名为
scores.PHP
),因此您只需要在Flash中使用一个函数来加载它

使用
urloader
和事件侦听器,您已经准备好了基本功能。您只需将这些应用于简单的加载:

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);
    }
}

注意您的PHP文件当前返回一个HTML结果表。这不会在Flash中表现;您最好通过键/值对发送并解析它们,或者只发送一个基本的HTML分数列表。

是的,兄弟,我更改了,它在数据库上显示了分数=100,但我的目标是发送用户输入的名称和分数。你能帮我一下吗。我很感激Tq。我试着使用上面的代码,但看起来它确认了提交到数据库的信息。因为我的想法是放置一个按钮,用户可以单击该按钮查看存储的名称和分数。您可以用一个按钮修改上面的代码,以减轻我的负担。@mchucha我再次更新了答案。我认为在你进一步研究之前,你需要对AS3中的加载、事件和侦听器的工作方式进行一些研究。你所有的想法都很好,兄弟,我想我还是想办法让这些数据显示在我的flash面板中。我做了一个按钮,你告诉我,并设置所有的连接似乎工作。然而,我必须有一些东西在flash中显示数据,这是我的挑战部分。我真的不知道如何做到这一点。如果有办法的话,帮帮我。Tq再次发送给您。@mchucha只需在您的舞台上创建一个实例名为
highscores
的文本字段。您需要更新PHP脚本以返回类似于
echo“scores=Best Times:…
-这样您就可以用
scores=
来预写返回的字符串,然后在
scoresLoadComplete
函数中,在
try
块中添加这一行:
highscores.htmlText=returnVars.scores;
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);
    }
}