2013-04-14 42 views
0

我正在使用php和mysql數據庫在flash as3中進行聊天。 但是我根本不知道php,並且遇到了更新消息的問題。 現在我的PHP文件看起來像這樣:通過PHP和Flash解析變量

$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; 

我的問題是如何循環對所有已經發出聊天消息發送它們閃爍。 我只能用一個來完成,但我需要加載其中的一大堆。

謝謝

回答

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; 

動作腳本會收到一個JSON對象尋找與此類似:

[ 

    { 

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

     "caster":"person1", 

     "msg":"Message 1" 

    }, 

    { 

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

     "caster":"person2", 

     "msg":"Message 2" 

    } 
] 

正如你可以看到JSON有沒有具體的變量名稱就像在這個問題習慣的版本(該方法在問題中使用不適用於大的結果列表)。

那麼你如何使用Actionscript中的JSON文檔?我不是一個程序員動作,但這個職位#1貌似合理的回答了這個問題:

Get and parse JSON in Actionscript

+0

確定。但是,我現在應該如何獲得變量? 我不知道他們的名字。 –

+0

檢查「打印json_encode($ result);」而不是print_r($ result)是否與Actionscript結合使用。這會將關聯數組轉換爲JSON,並且使用Actionscirpt遍歷數組元素應該很容易。 – herrjeh42

+0

soooo,我會得到數組命名結果爲? –