【MySQL】iOSアプリからDBのデータをPHPを用いてJSON形式で取得する方法
2015/01/14
前置き
iOSアプリ開発初心者の、Ralaxです。
今回は、アプリ内からサーバ上のPHPでアクセスして、
データベースのデータをJSON形式で取得する方法を紹介したいと思います。
なぜJSON形式で取得するかというと、
今回使用するライブラリ「AFNetWorking」は、
デフォルトでJSON形式をサポートしており、
非常に扱いやすい形でデータを取得することができるからです。
初期条件
開発環境
今回のテストは、
以下の様な環境で行いました。
PHP:5.33 |
MySQL:5.1.73 |
実験で使用するDBのテーブルの情報
今回使用したのは以下の様なDBにあるテーブルです。
phpmyadminを用いて、手動で作成しました。
データベース名:test |
テーブル名:test_json |
照合順序:utf8_general_ci |
作成したテーブル:test_json
field_A | field_B | field_C | |
1行目 | A-1 | B-1 | C-1 |
2行目 | A-2 | B-2 | C-2 |
アプリ側の設定
「AFNetworking」をPodインストールする。
CocoaPodsを使用します。
以下をPodfileに記述し、
「AFNetworking」をインストールします。
1 2 |
platform :ios, "7.0" pod 'AFNetworking' |
Cocoapodsって何?って方は
以下のサイトを参考にするといいです。
「AFNetworking」をインポート
1 |
#import "AFNetworking.h" |
作成したViewController.m
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
#import "ViewController.h" #import "AFNetworking.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; [self get_JSON]; } //JSON形式でのデータの取得 - (void)get_JSON { AFHTTPRequestOperationManager* manager = [AFHTTPRequestOperationManager manager]; NSDictionary* postparam = @{ @"table_name" : @"test_json"}; [manager POST:@"URL" parameters:postparam success:^(AFHTTPRequestOperation* operation, id responseObject) { //通信成功 NSLog(@"response: %@", responseObject); } failure:^(AFHTTPRequestOperation* operation, NSError* error) { //通信失敗 NSLog(@"Error: %@", error); }]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } @end |
サーバ側の設定
データベース接続用のクラスを作成
今回使用したデータベース接続クラスは以下のサイトのDatabaseClass.phpを使用しました。
※そのまま使用しても出力がうまくいかなかったので、
以下の記述を追加しました。
1 2 3 4 5 6 |
//MySQLデータベースを選択する $this->db=mysql_select_db($this->dbName,$this->link); /*追加*/ //UTF-8の文字コードに変更 mysql_set_charset('utf8'); |
JSON形式でデータを出力するPHPの作成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
< ?php //DatabaseClassを読み込み include_once "DatabaseClass.php"; //テーブル名が選択されているかどうか確認 if($_POST["table_name"]) { //DB名設定 $table_name = $_POST["table_name"]; $database = new Database("localhost","test","root","パスワードを入力"); $sql = ("SELECT * FROM {$table_name}"); //クエリ送信 $query = $database->query($sql); $json= array(); //テーブル名に「test_json」という文字列が入っているテーブルの //データをJSON形式で書き出し if(strstr($table_name, 'test_json')){ while ($row = mysql_fetch_object($query)) { $json[] = array( 'field_A'=> $row->field_A ,'field_B'=> $row->field_B ,'field_C' => $row->field_C ); } }//if(strstr($table_name, 'test_json')) //JSON形式で出力 header("Content-Type: application/json; charset=utf-8"); echo json_encode($json); //DBを閉じる $database->close(); }//if($_POST["table_name"]) ?> |
実行結果
うまく受信できたみたいです。
ログとして下の画像のような出力が得られました。
まとめ
今回使用した方法を使用することで、
iOSのアプリからMySQLのデータを、
PHP経由でJSON形式で取得できます。
ユーザーの情報などを管理するのに、
データベースは必須ですが、
通信の仕方がいまいちわからないという方の
参考になると嬉しいです。
スポンサードリンク
スポンサードリンク
関連記事
-
-
【MySQL】iOSアプリからサーバ上のDBにデータを送信する方法
前置き MySQL初心者の、Ralaxです。 今回は、アプリ内からサーバ上のPH …
-
-
【MGBoxKit】おしゃれで簡単にデザインできるUITableView,UICollectionView風なデザインの作り方!その2
前置き MGBoxKitに酔いしれている、Ralaxです。 前回に引き続き、 ラ …
-
-
【MGBoxKit】おしゃれで簡単にデザインできるUITableView,UICollectionView風なデザインの作り方!その1
前置き 久々にアプリ開発に取り組んでいる、Ralaxです。 個人でアプリ開発をし …
-
-
【MGBoxKit】おしゃれで簡単にデザインできるUITableView,UICollectionView風なデザインの作り方!その3
前置き 一つのことに集中すると周りが見えなくなる、Ralaxです。 前回、前々回 …