不能从flash builder 4.6移动flex发送数据到mysql php


can't send data from flash builder 4.6 mobile flex to mysql php

这是我的flash builder 4.6代码。

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

你应该把ResultEvent处理程序和FaultEvent处理程序在你的flex代码。

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

我不确定php上的"print"语句可以被Flex正确读取。我会使用"echo"语句。希望对大家有所帮助