这个PHP代码有效吗?

时间:2013-08-23 01:38:30

标签: php ios json post

我目前正在开发一个iOS应用程序,它与服务器上的数据库(REST API)进行通信。我已经设法将简单的帖子查询发送到服务器并成功获得响应,但是几个小时后我就陷入了以下php函数(它不是我自己编写的!)。我的问题:

  1. 这是有效的php代码吗?

  2. 是否可以同时发布JSON对象和非JSON对象?

  3. 有效的请求查询如何? (我使用谷歌Chrome应用程序“邮差 - REST客户端”来测试查询)那么如果想要传递tableid = 1,clientid = 1和json = {1,2,3,4},参数会是什么样子?

  4. 非常感谢!

    if($_POST['function'] == 'addOrder'){
    
        $sql = "INSERT INTO orders SET
                    orderdate = NOW(),
                    tableid = '".$_POST['tableid']."',
                    clientid = '".$_POST['clientid']."'";
        $result = mysql_query($sql);
        $oid = mysql_insert_id();
    
        $orderitems = json_decode($_POST['json'],true);
    
        reset($orderitems);
        while(list(,$oitem) = each($orderitems)){
            $sql = "INSERT INTO orderitems SET
                            orderid = '".$oid."',
                            foodid = '".$oitem['id']."";    
            $result = mysql_query($sql);
        }
    }
    

1 个答案:

答案 0 :(得分:0)

你问:

  

是否可以同时POST JSON-Objects和非JSON对象?

     

有效的请求查询如何? (我使用谷歌Chrome应用程序“邮差 - REST客户端”来测试查询)那么如果想要传递tableid = 1,clientid = 1和json = {1,2,3,4},参数会是什么样子? ?

是的,您可以在单个请求中发布JSON和非JSON。但是,JSON {1,2,3}没有意义。如果它是一个简单的数组,那就是[1,2,3]

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];
NSString *messageBody = @"function=addOrder&tableid=1&clientid=2&json=[1,2,3]";
NSData   *messageData = [messageBody dataUsingEncoding:NSUTF8StringEncoding];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:messageData];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
    if (error)
        NSLog(@"sendAsynchronousRequest error: %@", error);
    if (data) {
        NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        NSLog(@"%@", string);
    }
}];

注意,在while循环中,您引用的是$oitem['id'],但我不明白您所指的id。鉴于$orderitems是一个简单数组,每个项目仅由$oitem引用(no ['id'])。

另外,我通常使用foreach语法:

foreach ($orderitems as $oitem) {
    // now I can refer to $oitem
}

如果您的JSON是[{"id":1},{"id":2},{"id":3}],那么您会引用$oitem['id'],但如果是[1,2,3],则只需参考$oitem