2010-12-10 12 views
2

これは私をナットにしています。 PHP/mysqlのスキルが不足していることが強く疑われますが、動作させることができません。私はStackOverflowから問題を解決しようとしているいくつかのコードスニペットを別の場所で(そして盗んだ)見てきましたが、私はまだそれが働いていると確信していません。Array/Dict XcodeからJSON to PHP to mySql

From Xcode NSDictionaryオブジェクトを(JSONフレームワークを使用して)JSONにエンコードしようとしているので、PHP POSTメソッドを使用してmysql(理想的には単一の平坦化オブジェクトとして配列を格納できます) 。

コードは以下のとおりです。私はjson okを作成することができます。私はOKに接続することができます、私は配列変数でない変数を変更することができます& json経由で送信する必要はありません、私はちょうど何かについて行うことができます。私はそのjsonを渡してmysqlに格納するように見えません。

はい、noobです。

Thxを...

私がここまで持っている:Xcodeで

post_dict.php

<?php 

$rawJsonData = $_POST['json']; 
$decodedData = json_decode($rawJsonData); //do i even need to decode if i want to store a flattened json object in mysql? 


//Connect To Database 
$hostname='**BLACKEDOUT**.com'; 
$username='**BLACKEDOUT**'; 
$password='**BLACKEDOUT**'; 
$dbname='**BLACKEDOUT**'; 
$usertable='users'; 
//I want to update the Records field with the array 
$recordsfield = 'Records'; 


mysql_connect($hostname,$username, $password) OR DIE ('Unable to connect to database! Please try again later.'); 
mysql_select_db($dbname); 


$query = "UPDATE $usertable SET $recordsfield = '$decodedData' ";//do i encode? serialize? dunno 

$result = mysql_query($query); 


    if(!$result) 
    { 
     mysql_close(); 
     echo mysql_error(); 
     return; 
    } 

    mysql_close(); 


?> 

答えて

0

NSDictionary *loginDict = [NSDictionary dictionaryWithObjectsAndKeys: 
           @"aname", @"username", 
           @"hello", @"password", 
           nil]; 


    NSString *jsonString = [loginDict JSONRepresentation]; 
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; 
    NSString *post = [NSString stringWithFormat:@"json=%@", jsonString]; 
    NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:NO]; 

    [request setURL:[NSURL URLWithString:@"http://domain.com/post_dict.php"]]; 
    [request setHTTPMethod:@"POST"]; 

    [request setHTTPBody:postData]; 

    [[NSURLConnection alloc] initWithRequest:request delegate:self]; 

をあなたに答えるためにコメント://do i even need to decode if i want to store a flattened json object in mysql?

いいえ、あなたはjson_decode()データではありません。代わりに$rawJsonDataをMySQLに保存してください。ただし、mysql_real_escape_string()を使用してエスケープする必要があります。ここでは例です:

$rawJsonData = $_POST['json']; //i don't to decode if i want to store a flattened json object in mysql. 

//Connect To Database $hostname='BLACKEDOUT.com'; $username='BLACKEDOUT'; $password='BLACKEDOUT'; $dbname='BLACKEDOUT'; $usertable='users'; //I want to update the Records field with the array $recordsfield = 'Records'; 

mysql_connect($hostname,$username, $password) OR DIE ('Unable to connect to database! Please try again later.'); mysql_select_db($dbname); 

//Escape the JSON data for MySQL 
$mysqlEncodedJsonData = mysql_real_escape_string($rawJsonData); 

$query = "UPDATE $usertable SET $recordsfield = '$mysqlEncodedJsonData' ";//inserted variable should be mysql_real_escape_string()'d as it is above 

$result = mysql_query($query); 

if(!$result) { mysql_close(); echo mysql_error(); return; } 

mysql_close(); 
+1

素晴らしいとPHPで受信することができます - 迅速な対応に感謝を - 病気にそれを取得します。 –

1

あなたは、POSTメソッドであなたのJSONを送信する場合、それは以下のコード

<?php $handle = fopen('php://input','r'); 
       $jsonInput = fgets($handle); 
       // Decoding JSON into an Array 
       $decoded = json_decode($jsonInput,true); 
?>