duanchuaiwan0063 2010-05-30 07:55
浏览 17
已采纳

As3&PHP URLEncoding问题!

I'm stuck with a stupid problem of encoding.

My problem is that all my accentuated characters are displayed as weird iso characters.

Example : é is displayed %E9

I send a string to my php file :

XMLLoader.load(new URLRequest(online+"/query.php?Query=" + q));
XMLLoader.addEventListener(Event.COMPLETE,XMLLoaded);

When I trace q, I get :

"INSERT INTO hello_world (message) values('éàaà');"

The GOOD query

My php file look like this :

<?php 

include("conection.php");//Conectiong to database

$Q = $_GET['Query'];

$query = $Q;
$resultID = mysql_query($query) or die("Could not execute or probably SQL statement malformed (error): ". mysql_error());

$xml_output = "<?xml version=\"1.0\"?>
"; // XML header
$xml_output .= "<answers>
";

$xml_output .= "<lastID id=".'"'.mysql_insert_id().'"'." />
";

$xml_output .= "<query string=".'"'.$query.'"'." />
";

$xml_output .= "</answers>";

echo $xml_output;//Output the XML

?>

When I get back my XML into flash the $query looks like this :

"INSERT INTO hello_world (message) values('%E9%E0a%E0');"

And these values are then displayed into my DB which is annoying.

Any help would be appreciated! Cheers.

Jk_

  • 写回答

4条回答 默认 最新

  • dshnx48866 2010-05-30 09:39
    关注

    My problem is now solved!

    As andr wrote down above, it's really a bad idea to use GET to send a queries.

    It seems that when I sent the data from Flash using :

    XMLLoader.load(new URLRequest(online+"/query.php?Query=" + q));
    

    the URL was encoded and even with urldecode I got a blank entry in my DB.

    So thanks to andr and raz-l I changed the way I send the data to my php file.

    In flash I use URLVariables and in PHP I build my query:

    variables = new URLVariables();
    variables.Query = "éàûï ceci est un test...";
    request.method = URLRequestMethod.POST;         
    request.data = variables;
    XMLLoader.load(request);
    

    And my php file looks like this :

    $Q = mysql_real_escape_string($_POST['Query']);
    $query = "INSERT INTO hello_world (message) values ('".$Q."')";
    

    Jk_

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题
  • ¥20 RL+GNN解决人员排班问题时梯度消失
  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗
  • ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路
  • ¥15 phython读取excel表格报错 ^7个 SyntaxError: invalid syntax 语句报错
  • ¥20 @microsoft/fetch-event-source 流式响应问题