0

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

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

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

  3. 一个有效的请求查询是什么样子的?(我正在使用 Google Chrome 应用程序“Postman - REST Client”来测试查询)那么如果想要传递 tableid = 1、clientid = 1 和 json = {1,2,3,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);
    }
}
4

1 回答 1

0

你问:

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

一个有效的请求查询是什么样子的?(我正在使用 Google Chrome 应用程序“Postman - REST Client”来测试查询)那么如果想要传递 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.

于 2013-08-24T03:19:23.023 回答