1

サーバーからのデータをjsonで解析してiPhoneアプリで使用し、検索テキストフィールドを取得してサーバーに投稿し、テキストと一致して以下のデータを返すのは私のiPhoneコードです

    NSString*searchText=searchTextField.text;

NSString *post =[[NSString alloc] initWithFormat:@"searchCode=%@",searchText];

NSURL *url=[NSURL URLWithString:@"http://www.celeritas-solutions.com/pah_brd_v1/productivo/searchCatalog.php?"];

NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];

NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init] ;
[request setURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];


    NSError *error;
    NSURLResponse *response;
    NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

    NSString *data=[[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding];



    NSData* myData=[data dataUsingEncoding:NSUTF8StringEncoding];

    NSString *json_string = [[NSString alloc] initWithData:myData encoding:NSUTF8StringEncoding];
    NSArray *dataArr=[json_string JSONValue];

    for (int i=0; i<[dataArr count]; i++) {


        if (!dataArr || !dataArr.count){


            if(resultArray!=nil){
                resultArray=nil;
                resultArray=[[NSMutableArray alloc]init];
            }




        }



        NSDictionary *dict=[dataArr objectAtIndex:i];

        ObjectData *theObject =[[ObjectData alloc] init];



        [theObject setCategory:[dict objectForKey:@"category"]];
        [theObject setSub_Category:[dict objectForKey:@"sub_Category"]];    
        [theObject setContent_Type:[dict objectForKey:@"content_Type"]];
        [theObject setContent_Title:[dict objectForKey:@"content_Title"]];
        [theObject setPublisher:[dict objectForKey:@"publisher"]];
        [theObject setContent_Description:[dict objectForKey:@"content_Description"]];
        [theObject setContent_ID:[dict objectForKey:@"content_ID"]];
        [theObject setContent_Source:[dict objectForKey:@"content_Source"]];





        [resultArray addObject:theObject];
        [theObject release];
        theObject=nil;



    NSLog(@"%@", json_string);

これがJSOn文字列の結果です

       ProductivoApp[2087:c203] -JSONValue failed. Error trace is: (
"Error Domain=org.brautaset.JSON.ErrorDomain Code=3 \"Unrecognised leading character\" UserInfo=0x57b5a10 {NSLocalizedDescription=Unrecognised leading character}

URLの私のPHPコード

     $flu=$_POST['searchCode'];


       $query =mysql_query("SELECT * From catalog_Master WHERE category_Title LIKE '%$flu%'");

    $rows = array();
    while($row = mysql_fetch_assoc($query)) {
    $rows[] = $row;
     }
4

1 に答える 1

0

最新のコメントによると、これの理由は、クエリが失敗しているためです。

まず、関数を使用しないでくださいmysql_*ここの大きな赤いボックスを参照してください。代わりにPDOまたはMySQLiの使用を検討してください。

第二に、 SQL インジェクションにさらされている可能性があります。クエリをエスケープする必要があります。

3 番目に、クエリのエラー チェックを実行する必要があります。次のようなもの:

if(!$query) {
   die('Query failed. ' . mysql_error()');
}

これにより、クエリが失敗する理由がわかります。

mysql_connect()のコードも投稿していません。これもエラーチェックする必要があります。次のようなもの:

$link = mysql_connect('localhost', 'user', 'pass');
if(!$link) {
   // Handle it
}
于 2013-03-25T08:55:48.057 に答える