2014-07-22 71 views
-1

這是我的Flash Builder 4.6代碼。不能發送數據從Flash Builder 4.6移動flex到MySQL php

<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
     xmlns:s="library://ns.adobe.com/flex/spark" 
     creationComplete="send_data()" title="HomeView" 
     minWidth="955" minHeight="600"> 

    <fx:Declarations> 
     <!-- Place non-visual elements (e.g., services, value objects) here --> 

     <s:HTTPService id="userRequest" url="/request_post2.php" 
         useProxy="false" method="POST"> 
      <s:request xmlns=""> 
       <username>{username.text}</username> 
       <emailaddress>{emailaddress.text}</emailaddress> 
      </s:request>   
     </s:HTTPService> 

    </fx:Declarations> 

    <fx:Script> 
     <![CDATA[  
      private function send_data():void { 
       userRequest.send(); 
      } 
     ]]> 
    </fx:Script> 

    <s:Form x="20" y="10" width="386"> 
     <s:FormItem> 
      <s:Label text="Username" />  
      <s:TextInput id="username"/> 
     </s:FormItem> 
     <s:FormItem> 
      <s:Label text="Email Address" />  
      <s:TextInput id="emailaddress"/> 
     </s:FormItem> 
     <s:Button label="Submit" click="send_data()"/> 
    </s:Form> 
</s:View> 

這是我使用的php代碼。

<?php 
define("DATABASE_SERVER", "*********"); 
define("DATABASE_USERNAME", "**************"); 
define("DATABASE_PASSWORD", "*****************"); 
define("DATABASE_NAME", "*******************"); 

//connect to the database. 
$mysql = mysql_connect(DATABASE_SERVER, DATABASE_USERNAME, DATABASE_PASSWORD); 

mysql_select_db(DATABASE_NAME); 

// Quote variable to make safe 
function quote_smart($value) 
{ 
    // Stripslashes 
    if (get_magic_quotes_gpc()) { 
    $value = stripslashes($value); 
    } 
    // Quote if not integer 
    if (!is_numeric($value)) { 
    $value = "'" . mysql_real_escape_string($value) . "'"; 
    } 
    return $value; 
} 

if($_POST["emailaddress"] AND $_POST["username"]) 
{ 
//add the user 
$Query = sprintf("INSERT INTO users VALUES ('', %s, %s)", 
     quote_smart($_POST['username']), quote_smart($_POST['emailaddress'])); 

$Result = mysql_query($Query); 
} 

//return a list of all the users 
$Query = "SELECT * from users"; 
$Result = mysql_query($Query); 

$Return = "<users>"; 

while ($User = mysql_fetch_object($Result)) 
{ 
$Return .= "<user><userid>".$User->userid."</userid><username>". 
      $User->username."</username><emailaddress>". 
      $User->emailaddress."</emailaddress></user>"; 
} 
$Return .= "</users>"; 
mysql_free_result($Result); 
print ($Return) 
?> 

,我發現這個代碼在網上,並試圖使其工作,但沒有成功,我沒有看到任何錯誤信息,我可以搜索。

我在虛擬設備上調試。

這是php代碼,工作之一。

<?php 
$v1= $_POST['username']; 
$v2= $_POST['emailaddress']; 

// include db connect class 
    require_once __DIR__ . '/db_connect.php'; 

    // connecting to db 
    $db = new DB_CONNECT(); 
    mysql_query("SET NAMES utf8;"); 

mysql_query("SET CHARACTER_SET utf8;"); 

// mysql inserting a new row 
$result = mysql_query("INSERT INTO users(username,emailaddress) VALUES('$v1','$v2')"); 
echo $result; 

?> 

回答

1

您應該在您的flex代碼中放置ResultEvent處理程序和FaultEvent處理程序。

<s:HTTPService id="userRequest" url="/request_post2.php" result="myResultHandler(event)" fault="myFaultHandler(event)" 
        useProxy="false" method="POST"> 
     <s:request xmlns=""> 
      <username>{username.text}</username> 
      <emailaddress>{emailaddress.text}</emailaddress> 
     </s:request>   
    </s:HTTPService> 

在您的AS3腳本中聲明在MXML引用的方法:

private function myResultHandler(event:ResultEvent):void{ 
    Alert.show(event.result.toString()); 
} 

private function myFaultHandler(event:FaultEvent):void{ 
    Alert.show(event.fault.toString()); 
} 

I'not確保在PHP中的 「打印」 語句可以正確地由Flex讀取。 我會使用「回聲」語句。 希望對您有所幫助

+0

謝謝我做了你的建議,我什麼也沒有。也許這是一個PHP代碼錯誤。我正在調查它,如果有其他建議,他們是最受歡迎的 – user3848205

+0

問題出在我的PHP代碼我改變了它,它現在工作,我可以插入數據到我的數據庫,並感謝ui獲得成功的結果或失敗。現在我將開始將數據從數據庫加載到應用程序本身。 – user3848205