私は現在、これと同じ機能を必要とするiOSアプリケーションで作業しています。サーバーでのmySQLデータベースクエリには、テーブル名やデータベース検索用語などの変数を受け入れることができるサーバー側のPHPスクリプトを使用しています。
私がやっていることは、Objective-CのNSMutableURLRequestを使用してHTTP GETリクエストを作成し、サーバーにリクエストを処理させ(PHPで)、データベースクエリの結果をJSON形式でアプリケーションに返すことです。SBJsonParserを使用して、返されたデータをNSDataに解析し、次にNSArrayオブジェクトに解析します。
Objective-CでHTTPリクエストを行う例:
NSString *urlString = [NSString stringWithFormat:@"http://website.com/yourPHPScript.php?yourVariable=something"];
NSURL *url = [NSURL URLWithString: urlString];
NSMutableURLRequest *request1 = [[NSMutableURLRequest alloc] initWithURL:url];
/* set the data and http method */
[request1 setHTTPMethod:@"GET"];
[request1 setHTTPBody:nil];
/* Make the connection to the server with the http request */
[[NSURLConnection alloc] initWithRequest:request1
delegate:self];
リクエストが戻ってきたときに実際にリクエストに応答するために追加する必要のあるコードが他にもあります。必要に応じて、その例を投稿できます。
これが最善の方法かどうかは実際にはわかりませんが、これまでのところうまくいきました。ただし、PHPを知っている必要があります。経験があれば、PHPについては知りません。
アップデート:
リクエストに応答する方法を示すサンプルコードを次に示します。私の場合、JSONでエンコードされた応答を取得しているので、SBJsonParserを使用して応答を解析します。
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
/* This string contains the response data.
* At this point you can do whatever you want with it
*/
NSString *responseString = [[NSString alloc] initWithData:receivedData
encoding:NSUTF8StringEncoding];
/* Here I parse the response JSON string into a native NSDictionary using an SBJsonParser */
SBJsonParser *parser = [[[SBJsonParser alloc] init] autorelease];
/* Parse the JSON into an NSDictionary */
NSDictionary *responseArr = [parser objectWithString:responseString];
/* Do whatever you want to do with the response */
/* Relsease the connection unless you want to re-use it */
[connection release];
}
また、receivedDataというタイトルのNSMUtableDataインスタンス変数があると仮定して、これらのメソッドを追加します。
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
[receivedData setLength:0];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
[receivedData appendData:data];
}