Quindi ho esaminato un numero infinito di problemi simili, ma nessuno di loro ha risposto a quello che stavo cercando o ha risposto in modo completo, quindi spero che tutti voi possiate aiutarmi.Passaggio di array a PHP utilizzando POST da iOS
Ho bisogno di passare un array di restaurantID da iOS a un file PHP usando il POST o comunque che funzionerebbe bene. So di ASIHTTPRequest ma sto cercando qualcosa di integrato ed è stato abbandonato dallo sviluppatore. E infine, non voglio passarli attraverso l'URL perché non so quante voci ci saranno.
Quindi ecco cosa ho ottenuto finora.
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:theURL]];
[request setHTTPMethod:@"POST"];
NSMutableDictionary *jsonDict = [[NSMutableDictionary alloc] init];
[jsonDict setValue:restaurants forKey:@"restIDs"];
NSLog(@"JSON Dict: %@",jsonDict);//Checking my array here
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsonDict options:kNilOptions error:nil];
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
NSLog(@"JSON String: %@",jsonString); //Checking my jsonString here...
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setValue:@"json" forHTTPHeaderField:@"Data-Type"];
[request setValue:[NSString stringWithFormat:@"%d", [jsonData length]] forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody: jsonData];
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSLog(@"Return DATA contains: %@", [NSJSONSerialization JSONObjectWithData:returnData options:NSJSONReadingMutableContainers error:nil]);
NSArray *restMenuCount = [NSJSONSerialization JSONObjectWithData:returnData options:NSJSONReadingMutableContainers error:nil];
Quindi, da questo fine, ho controllato tutto e tutto sembra buono, ma a partire dalla fine di PHP non ha nemmeno prenderlo.
Ecco ciò che il mio file PHP assomiglia:
$restIDs = $_POST['restIDs'];
echo $restIDs; //Checking to see if it even has anything......but nothing there
for ($i = 0; $i < $restIDs.count; $i++) {
$query = "SELECT * FROM `MenuItems` WHERE rest_id = '$restID'";
$result = mysqli_query($connect, $query);
$number = mysqli_num_rows($result);
$menuNumber[$i] = $number;
}
echo json_encode($menuNumber);
Così alla fine, quello che sto facendo di sbagliato? Perché non ricevo nulla sul mio terminale PHP. E soprattutto, qualcuno può spiegarmi come inviare gli array tramite un POST. Perché sento che questo è il mio vero problema qui, non lo capisco abbastanza per risolvere il problema me stesso. Non capisco come si possa inserire tutto dal lato iOS e riprenderlo dal lato PHP.
Spero che tutto ciò sia stato abbastanza chiaro, grazie in anticipo.
EDIT:
ho provato passando l'array come una stringa tramite l'URL poi esplodere è, per fortuna ha funzionato ... ma io sono appena sotto il limite di URL, così mi piace ancora di capire un'altra soluzione. Almeno, ora so che il resto del mio codice funzionava come previsto.
stai usando un framework PHP? – ekims
Il tuo codice contiene una [vulnerabilità di SQL injection] (http://en.wikipedia.org/wiki/SQL_injection). Stai usando mysqli, perché non stai usando istruzioni preparate? – Charles
Ciao Charles, sì il mio codice contiene vulnerabilità di SQL injection, ma cosa intendi con istruzioni preparate? – WiseOlMan