0

私はphpとmysqlデータベースを使ってフラッシュ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;

私の質問は、既に送信されたすべてのチャットメッセージをループしてフラッシュに送信する方法です。1つしかできませんが、たくさんロードする必要があります。

ありがとう

4

1 に答える 1

0

あなたが探しているのは「fetchAll」です。コードは SQL インジェクションに対してオープンであることに注意してください。PHP スクリプトに悪意のある値を渡すことで、データベースを削除するのは非常に簡単です。したがって、コードを非推奨の Mysql 拡張機能から PDO に変更しました。PDO は値をエスケープします。PDO の詳細については、PHP マニュアルを参照してください (多くの例があります)。

また、データベース内のチャット テーブルのフィールド名がどのように命名されているかを推測できなかったため、次のコードを切り取る必要があることに注意してください。したがって、以下の挿入ステートメントを調整する必要があります。

// 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"

   }
]

ご覧のとおり、質問で使用されている GET を使用したバージョンのように、JSON には特定の変数名がありません (質問で使用されている方法は、大きな結果リストでは機能しません)。

では、Actionscript で JSON ドキュメントをどのように操作するのでしょうか? 私はアクション スクリプト プログラマーではありませんが、この Stackoverflow の投稿は、この問題に対する適切な回答のように見えます。

Actionscript で JSON を取得して解析する

于 2013-04-14T12:29:04.033 に答える