0

我正在使用 php 和 mysql 数据库在 flash as3 中聊天。但是我根本不了解 php,并且在更新消息时遇到了问题。现在我的 php 文件看起来像这样:

$caster = $_POST['caster'];
$msgText = $_POST['msgText'];
$sendTime = $_POST['sendTime'];

$query = "INSERT INTO chat VALUES ('','$sendTime','$caster','$msgText')"
mysql_query($query);
$query="SELECT * FROM chat";
$result=mysql_query($query);
$cast=mysql_result($result,1,"caster");
mysql_close();

$returnVars = array();
$returnVars['success'] = $success;
$returnVars['caster'] = $cast;
$returnString = http_build_query($returnVars);
echo $returnString;

我的问题是如何循环所有已发送的聊天消息以将它们发送到闪存。我只能用一个来完成,但我需要加载一大堆。

谢谢

4

1 回答 1

0

您正在寻找的是“fetchAll”。请注意,您的代码对 SQL 注入是开放的,很容易通过将恶意值传递给 PHP 脚本来删除您的数据库。因此,我已将代码从已弃用的 Mysql 扩展更改为 PDO。PDO 将为您转义值。在 PHP 手册中阅读有关 PDO 的更多信息(那里有很多示例)。

另请注意,您必须修改以下代码,因为我无法猜测数据库中聊天表的字段名称是如何命名的。所以你必须调整下面的插入语句。

// database config parameters
$dbhost = "localhost";
$dbname = "test";
$dbuser = "root";
$dbpass = "";


try {

    // try to set up a db connection
    $db = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);

    // insert the data using PDO's prepared statements
    // you have to adapt this line to the field names of your chat table!!
    $sql = "INSERT INTO chat (sendtime,caster,msg) VALUES (:sendtime,:caster,:msg)";
    $sth = $db->prepare($sql);
    $sth->execute(array(
         ':caster' => $_POST['caster'],
         ':sendtime' => $_POST['sendTime'],
         ':msg' => $_POST['msgText']
    ));


    // Get everything
    $sth = $db->prepare("SELECT * FROM chat");
    $sth->execute();
    $result = $sth->fetchAll(PDO::FETCH_ASSOC);
    // your code to format and return the data goes here 
    print json_encode($result);
}
catch (PDOException $e) {
    // if anything related to the database goes wrong, catch the exceptions
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}

$db = null;

Actionscript 将收到一个类似于以下内容的 JSON 对象:

[

   {

      "sendtime":"2013-04-14",

      "caster":"person1",

      "msg":"Message 1"

   },

   {

      "sendtime":"2013-04-15",

      "caster":"person2",

      "msg":"Message 2"

   }
]

如您所见,JSON 没有特定的变量名称,例如问题中使用 GET 的版本(问题中使用的方法不适用于大型结果列表)。

那么如何在 Actionscript 中使用 JSON 文档呢?我不是一个动作脚本程序员,但这个 Stackoverflow 帖子看起来是这个问题的一个合理答案:

在 Actionscript 中获取和解析 JSON

于 2013-04-14T12:29:04.033 回答