我在JSONString中发送了4个不同的值。我需要以某种方式(解码?)将这些转换为PHP值,以将其发送到MySQL数据库。
此函数发送到php文件:
- (void)myFuntionThatWritesToDatabaseInBackgroundWithLatitude:(NSString *)latitude longitude:(NSString *)longitude date:(NSString *)stringFromDate
{
_phonenumber = [[NSUserDefaults standardUserDefaults] objectForKey:@"phoneNumber"];
NSMutableString *postString = [NSMutableString stringWithString:kPostURL];
NSString*jsonString = [[NSString alloc] initWithFormat:@{\"id\":\"%@\",\"longitude\":\"%@\",\"latitude\":\"%@\",\"timestamp\":\"%@\"}", _phonenumber, longitude , latitude, stringFromDate];
[postString appendString:[NSString stringWithFormat:@"?data=%@", jsonString]];
[postString setString:[postString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:postString ]];
[request setHTTPMethod:@"POST"];
[[NSURLConnection alloc] initWithRequest:request delegate:self ];
NSLog(@"Post String =%@", postString);
// LocationTestViewController*locationTestViewController = [[LocationTestViewController alloc]init];
// phonenumber = locationTestViewController.telefoonnummer;
NSLog(@"HERE1 : %@", _phonenumber);
}
这部分可能出错:
NSString* jsonString = [[NSString alloc] initWithFormat:@{\"id\":\"%@\",\"longitude\":\"%@\",\"latitude\":\"%@\",\"timestamp\":\"%@\"}", _phonenumber, longitude , latitude, stringFromDate];
这是我的日志:
2012-10-09 15:32:59.869 MyApp[626:c07] Post String=http://www.yourdomain.com/locatie.php? data=%7B%22id%22:%220612833397%22,%22longitude%22:%22-143.406417%22,%22latitude%22:%2232.785834%22,%22timestamp%22:%2209-10%2015:05%22%7D
它将它发送到这个PHP文件,其中需要为MySQL插入准备id,经度,纬度和时间戳
<?php
$id = $_POST['id'];
$longitude = $_POST['longitude'];
$latitude = $_POST['latitude'];
$timestamp = $_POST['stringFromDate'];
$link = mysql_connect('server', 'bla', 'bla') or die('Could not connect: ' . mysql_error());
mysql_select_db('bla') or die('Could not select database');
// Performing SQL query
$query="INSERT INTO locatie (id, longitude, latitude, timestamp)
VALUES ($id, $longitude,$latitude,$timestamp)";
$result = mysql_query($query) or die('Query failed: ' . mysql_error());
echo "OK";
// Free resultset
mysql_free_result($result);
// Closing connection
mysql_close($link);
?>
答案 0 :(得分:1)
试试这段代码:
$tmpdata = urldecode($_GET['data']);
$data = json_decode($tmpdata);
$id = $data['id'];
$longitude = $data['longitude'];
$latitude = $data['latitude'];
$timestamp = $data['stringFromDate'];
$link = mysql_connect('server', 'bla', 'bla') or die('Could not connect')
mysql_select_db('bla') or die('Could not select database');
// Performing SQL query
$query="INSERT INTO locatie (id, longitude, latitude, timestamp)
VALUES ($id, $longitude,$latitude,$timestamp)";
$result = mysql_query($query) or die('Query failed: ' . mysql_error());
echo "OK";
// Free resultset
mysql_free_result($result);
// Closing connection
mysql_close($link);
答案 1 :(得分:0)
简单的拼写错误。取代
NSString* jsonString = [[NSString alloc] initWithFormat:@{\"id\":\"%@\",\"longitude\":\"%@\",\"latitude\":\"%@\",\"timestamp\":\"%@\"}", _phonenumber, longitude , latitude, stringFromDate];
带
NSString* jsonString = [[NSString alloc] initWithFormat:@"\"id\":\"%@\",\"longitude\":\"%@\",\"latitude\":\"%@\",\"timestamp\":\"%@\"", _phonenumber, longitude , latitude, stringFromDate];