PHP アプリ開発(iOS /AndroidでHTTP通信アプリ)

PHP アプリ開発

PHP 、iOS/Android連携でポイントとなるのは3点です。

1.iOS/Androidからデータの受け取り
2.PHP上での処理
3.処理後の結果の通知

1.iOS/Androidからデータの受け取り

iOS/Androidからphpが起動される際に、パラメタ情報を受け取ります。

1//
2$usernum = $_POST["usernum"];//ユーザー番号
3$name = $_POST["name"];//ユーザー名
4$addr = $_POST["addr"];//住所
5//

項目は、usernum(ユーザー番号)、name(ユーザー名)、addr(住所)としています。

$_POST[“usernum”]、$_POST[“name”]、$_POST[“addr”]は、ios/Androidからのインターフェース情報です。

呼び出し元で、 以下の定義でパラメータを作成します。
usernum=XXXX&name=XXXX&addr=XXXX」の形式で、XXXXは値がセットされます。

※参考 iOSのI/F情報

1//
2 NSString*post = [NSString stringWithFormat:@"usernum=%@&name=%@&addr=%@" ,user_num,username,addr];
3//
2.PHP上での処理
Select処理で、一連の流れを記載しています。update、Insert、deleteも同様の作りとしています。

◆Select処理

1//
2$dsn = "$db_type:host=$db_host;dbname=$db_name;charset=utf8";
3 
4//ok
5$link = mysql_connect('aqlier.com', 'root', '');
6if (!$link) {
7 die('接続失敗です。'.mysql_error());
8}
9 
10//print('
11 
12接続に成功しました。
13 
14');
15 
16$db_selected = mysql_select_db('mysql', $link);
17if (!$db_selected){
18 die('データベース選択失敗です。'.mysql_error());
19}
20 
21//print('
22 
23データベースを選択しました。
24 
25');
26 
27$dsn = "$db_type:host=$db_host;dbname=$db_name;charset=utf8";
28 
29try {
30 $pdo = new PDO($dsn, $db_user,$db_pass);
31 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
32 $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
33 } catch(PDOException $Exception) {
34 die('エラー :' . $Exception->getMessage());
35 }
36 
37try {
38 
39$sql= "SELECT * FROM db01 WHERE user_num = $usernum";
40 $stmh = $pdo->prepare($sql);
41 $stmh->bindValue(':user_num', '$usernum', PDO::PARAM_STR );
42 $stmh->execute();
43 $count = $stmh->rowCount();
44 
45} catch (PDOException $Exception) {
46 $count = 0;
47}
48 
49if ($count == 0){
50 print "name=#該当データなし"."# #";
51 
52}else{
53 $row = $stmh->fetch(PDO::FETCH_ASSOC);
54 print "name=#".$row['user_name']."#".$row['user_addr']."#";
55 
56}
57?>
58?>


◆Update処理 変更箇所のみ記載
 

1try {
2 $pdo->beginTransaction();
3 $sql = "UPDATE db01
4 SET
5 user_name = '$name',
6 user_addr = '$addr'
7 WHERE user_num = $usernum";
8 
9$stmh = $pdo->prepare($sql);
10 $stmh->bindValue(':user_name', $name, PDO::PARAM_STR );
11 $stmh->bindValue(':user_addr', $addr, PDO::PARAM_STR );
12 
13$stmh->execute();
14 $pdo->commit();
15 print "ok
16";
17 
18} catch (PDOException $Exception) {
19 $pdo->rollBack();
20 print "エラー:" . $Exception->getMessage();
21}

◆Insert処理 変更箇所のみ記載 

補足:DBでユーザ番号をキー部にしていないので、Insert命令を行う前に、ユーザ番号が重複しないように検索処理を行ってZERO件の時にinsertする処理にしています。

1//
2try {
3 $pdo->beginTransaction();
4 $sql = "INSERT INTO db01 (user_num, user_name, user_addr) VALUES ( '$usernum', '$name', '$addr' )";
5 $stmh = $pdo->prepare($sql);
6 $stmh->bindValue(':user_num', $usernum, PDO::PARAM_STR );
7 $stmh->bindValue(':user_name', $name, PDO::PARAM_STR );
8 $stmh->bindValue(':user_addr', $addr, PDO::PARAM_STR );
9 $stmh->execute();
10 $pdo->commit();
11 print "ok
12";
13 
14} catch (PDOException $Exception) {
15 $pdo->rollBack();
16 print "エラー:" . $Exception->getMessage();
17}
18 
19}
20 
21} catch (PDOException $Exception) {
22 print "データあり";
23}
24//

◆Delete処理 変更箇所のみ記載 

1//
2try {
3 $pdo->beginTransaction();
4 $sql = "DELETE FROM db01
5 WHERE user_num = $usernum";
6 $stmh = $pdo->prepare($sql);
7 $stmh->bindValue(':user_num', $usernum, PDO::PARAM_INT );
8 $stmh->execute();
9 $pdo->commit();
10 print "ok
11";
12 } catch (PDOException $Exception) {
13 $pdo->rollBack();
14 print "エラー:" . $Exception->getMessage();
15 }

3.処理後の結果の通知

呼び出し元に処理結果を通知します。

1//
2print "name=#".$row['user_name']."#".$row['user_addr']."#";
3//

print の結果を呼び出し元に返しています。正常なら、ユーザ名と住所です。
受け取り処理を簡素化するため文字区切りで「#」を使用しています。

検索処理以外では、正常なら戻り値に「OK」を返しています。

関連記事

    iOS/AndroidでHTTP通信アプリのまとめ

Verified by MonsterInsights