【问题标题】:Passing json data to online server from iphone its storing empty data in my online database将 json 数据从 iphone 传递到在线服务器,它将空数据存储在我的在线数据库中
【发布时间】:2014-04-26 00:10:43
【问题描述】:

嗨,在我的应用程序中,我将数据存储在 sqlite3 数据库中,并作为 json 传递给我的服务器端脚本,我已将代码插入在线服务器中,我正在使用 php 脚本。一切正常,但在我的在线服务器中,它存储了空数据。

        [_dataDictionary setObject:[NSString stringWithFormat:@"%@",field1Str] forKey:@"name"];
        [_dataDictionary setObject:[NSString stringWithFormat:@"%@",field2Str] forKey:@"city"];
        [_dataDictionary setObject:[NSString stringWithFormat:@"%@",field3Str] forKey:@"phone"];
        [_dataDictionary setObject:[NSString stringWithFormat:@"%@",field4Str] forKey:@"email"];

        [array addObject:_dataDictionary];


        NSData* jsonData = [NSJSONSerialization dataWithJSONObject:array options:kNilOptions error:nil];

        NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
        NSURL *someURLSetBefore =[NSURL URLWithString:@"http://indianpoliticalleadersmap.com/IOS/trail/insert.php"];
        [request setURL:someURLSetBefore];
        [request setHTTPMethod:@"POST"];
        [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
        [request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
        [request setHTTPBody:jsonData];

        // print json:
        NSLog(@"JSON summary: %@", [[NSString alloc] initWithData:jsonData
                                                         encoding:NSUTF8StringEncoding]);
        NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
        [connection start];
     } 
    }

当我记录 json 时,它的显示就像这种格式。

[{"name":"sdfsdf","phone":"0","city":"dsf","email":"dsf"}] 2014-03-19 20:06:21.567 数据库[2576:70b] JSON 摘要:[{"name":"sdfsdf","phone":"0","city":"dsf","email":" dsf"},{"name":"sdfsf","phone":"13123123","city":"13123123","email":"sdfsdfdsfsd"}]

如果我打印存储数据字典的数组,其显示如下。

[数组 addObject:_dataDictionary];

{
    city = "selva kumar";
    email = madurai;
    name = 8870882627;
    phone = "shantharsk@gmail.com";
},

如果我打印上面代码中的各个字段 field1Str,field2Str.....

姓名:阿斯温,城市:卡纳塔克邦,电话:133213232,电子邮件:vvvvvv

这是我的 php 代码,用于插入我的在线数据库。

  <?php 

     $json = file_get_contents('php://input');
     $obj = json_decode($json);

     //echo $json;

     //Database Connection
  require_once 'db.php';

     /* insert data into DB */
      mysql_query("INSERT INTO `db512172115`.`trial` (name, phone, city, email) 
      VALUES ('".$obj->{'name'}."', '".$obj->{'phone'}."', '".$obj->{'city'}."', '".$obj->{'email'}."')");

     //database connection close
 mysql_close($con);

   //}
  ?>

请告诉我在上面代码中的哪个位置,为什么它没有存储在我的数据库中,请给出一些解决方案,我已经与这个堆叠了很长时间,我无法弄清楚它在吃我的头。

谢谢。

【问题讨论】:

    标签: php ios iphone json


    【解决方案1】:

    您尝试过var_dump($json);var_dump($obj); 吗?在插入数据库之前? 似乎您正在发送一个包含一个对象的数组,因此请尝试以下操作:

    $obj[0]-&gt;name; // etc ...

    $obj 将包含一个数组,如果 json 字符串包含一个带有对象的数组,请在下面的评论中回答您的问题,您可以在下面找到如何声明一个数组:

    $myArray = array('a','b');
    

    或如下关联数组:

    $myArray =  array('a' => 'a value', 'b' => 'b value');
    

    回到您的具体案例:

    如果你在 php 服务器端有这个 json 字符串:

    [
        {"name":"sdfsdf","phone":"0","city":"dsf","email":"dsf"},
        {"name":"sdfsf","phone":"13123123","city":"13123123","email":"sdfsdfdsfsd"}
    ]
    

    您需要一个循环来抛出数组中的所有对象并插入它们,如下所示:

     <?php 
    
         $json = file_get_contents('php://input');
         $obj = json_decode($json);
    
         //var_dump($json); // you can use var_dump for debug.
    
         //Database Connection
          require_once 'db.php';
    
         /* insert data into DB */
          foreach ($obj as $element){
          mysql_query("INSERT INTO `db512172115`.`trial` (name, phone, city, email) 
          VALUES ('".$element->name."', '".$element->phone."', '".$element->city."', '".$element->email."')");
          }
         //database connection close
          mysql_close($con);
    
       //}
      ?>
    

    【讨论】:

    • 请告诉如何制作数组声明 $obj[] = json_decode($json);对吗
    • 我做了一些我喜欢你告诉它给出语法错误的事情你能检查一下我在哪里做错了声明 $json = file_get_contents('php://input'); $obj = json_decode($json); $obj = obj('na','ph','cit','em');
    • 在此代码中显示语法错误 VALUES ('".$obj('na' => 'name', 'ph' => 'phone', 'cit' => 'city', 'em' => 'email')");
    • 您的评论问题似乎跑题了,请查看此页面:docs.php.net/manual/en/language.types.array.php 这显示了如何声明以及如何使用数组。
    • @user3427551,这回答了你的问题吗?
    猜你喜欢
    • 2014-03-28
    • 2015-10-27
    • 2017-01-03
    • 2017-11-15
    • 1970-01-01
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多