Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS-JSONString到PHP_Php_Ios_Json - Fatal编程技术网

iOS-JSONString到PHP

iOS-JSONString到PHP,php,ios,json,Php,Ios,Json,我在一个JSONString中发送4个不同的值。我需要以某种方式(解码?)将这些值转换为PHP值,以将其发送到MySQL数据库 此函数将is发送到php文件: - (void)myFuntionThatWritesToDatabaseInBackgroundWithLatitude:(NSString *)latitude longitude:(NSString *)longitude date:(NSString *)stringFromDate { _phonenumber = [

我在一个JSONString中发送4个不同的值。我需要以某种方式(解码?)将这些值转换为PHP值,以将其发送到MySQL数据库

此函数将is发送到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);
?>

简单的打字错误。替换

NSString* jsonString = [[NSString alloc] initWithFormat:@{\"id\":\"%@\",\"longitude\":\"%@\",\"latitude\":\"%@\",\"timestamp\":\"%@\"}", _phonenumber, longitude , latitude, stringFromDate];

请尝试以下代码:

$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);

这不也需要删除吗?“}”不会生成无效的JSON字符串吗?它们应该包含在
{}
中,不是吗?如果您使用
json\u decode
,就像alan978建议的那样,那么是的,您应该放回括号。与原始代码不同。你错过了一个开场白“。在旁注上,请使用。在查询中插入未扫描的数据是非常危险的!也不起作用,我仍然得到消息,$id、$longitude、$latitude和$timestamper中没有值,这不仅仅是因为默认情况下创建stdClass实例,即您需要访问如下属性
$id=$data->id
,或使用
json\u解码($tmpdata,true)
以解码到关联数组中,并将“true”添加到json_decode($tmpdata,true);正如ndm建议的那样:)
$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);