Reputation: 1498
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\"?>\n"; // XML header
$xml_output .= "<answers>\n";
$xml_output .= "<lastID id=".'"'.mysql_insert_id().'"'." />\n";
$xml_output .= "<query string=".'"'.$query.'"'." />\n";
$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_
Upvotes: 1
Views: 1533
Reputation: 1498
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_
Upvotes: 0
Reputation: 1203
urldecode will do the job.
On the side note, it is very bad practice to send queries like that. Send the necessary data, filter it and then construct the query, unless you're building a clone of phpMyAdmin.
Upvotes: 1
Reputation: 17683
flash may be requesting the url with encoded parameter/querystring so decode it in php using urlencode.
i.e
$Q = urldecode($_GET['Query']);
Upvotes: 0