我目前正在开发一个iOS应用程序,它与服务器上的数据库(REST API)进行通信。我已经设法将简单的帖子查询发送到服务器并成功获得响应,但是几个小时后我就陷入了以下php函数(它不是我自己编写的!)。我的问题:
这是有效的php代码吗?
是否可以同时发布JSON对象和非JSON对象?
有效的请求查询如何? (我使用谷歌Chrome应用程序“邮差 - REST客户端”来测试查询)那么如果想要传递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);
}
}
答案 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
。