Я разрабатываю приложение iPhone с использованием инфраструктуры JSON, я вызываю PHP-скрипт для обновления базы данных MySQL на локальном сервере. Используя этот код:
NSString *jsonString = [sendData JSONRepresentation]; NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; NSString*post = [NSString stringWithFormat:@"&json=%@", jsonString]; NSData*postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:NO]; [request setURL:[NSURL URLWithString:@"http://localhost:8888/update.php"]]; [request setHTTPMethod:@"POST"]; [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"]; [request setHTTPBody:postData];
Я бы хотел спросить:
Что такое PHP-скрипт для получения данных из этого запроса и как я могу декодировать данные JSON для объекта PHP для обновления базы данных?
Любая помощь будет оценена по достоинству.
Вы найдете свои данные в переменной $ _POST ['json'], вы можете посмотреть, что вы получили через POST, используя:
<?php print_r($_POST); ?>
Как только вы определили, где ваши данные, вы можете перейти от JSON к данным PHP, используя:
<?php $phpObj = json_decode($_POST['json']); ?>
Опять же, вы можете использовать print_r для просмотра структуры ваших данных:
<?php print_r($phpObj); ?>
Я не делал этого с iPhone, но похоже, что это будет просто:
if(isset($_REQUEST['json']) && $_REQUEST['json']) { $jsonObj = json_decode($_REQUEST['json']); //mandatory sanitizing and verification here //PDO examples //$stmt = $db->prepare('INSERT ...'); //$stmt->execute(array($jsonObj->userId, $jsonObj->specialData)); //check statement execution }
Больше информации:
Вот несколько строк кода с ограниченной информацией, которую вы предоставили
<?php // get data $rawJsonData = $_POST; $decodedData = json_decode($rawJsonData); // .. do some parsing on $decodedData .. // save data $db = new Db(); $db->insert('table', $decodedData);
$decodedData
будет массивом PHP, который вы можете обработать любым способом, а затем сохранить в db.