PHP アプリ開発
PHP 、iOS/Android連携でポイントとなるのは3点です。
1.iOS/Androidからデータの受け取り
2.PHP上での処理
3.処理後の結果の通知
1.iOS/Androidからデータの受け取り
iOS/Androidからphpが起動される際に、パラメタ情報を受け取ります。
// $usernum = $_POST["usernum"];//ユーザー番号 $name = $_POST["name"];//ユーザー名 $addr = $_POST["addr"];//住所 //
項目は、usernum(ユーザー番号)、name(ユーザー名)、addr(住所)としています。
$_POST[“usernum”]、$_POST[“name”]、$_POST[“addr”]は、ios/Androidからのインターフェース情報です。
呼び出し元で、 以下の定義でパラメータを作成します。
「usernum=XXXX&name=XXXX&addr=XXXX」の形式で、XXXXは値がセットされます。
※参考 iOSのI/F情報
// NSString*post = [NSString stringWithFormat:@"usernum=%@&name=%@&addr=%@" ,user_num,username,addr]; //
2.PHP上での処理
Select処理で、一連の流れを記載しています。update、Insert、deleteも同様の作りとしています。
◆Select処理
// $dsn = "$db_type:host=$db_host;dbname=$db_name;charset=utf8"; //ok $link = mysql_connect('aqlier.com', 'root', ''); if (!$link) { die('接続失敗です。'.mysql_error()); } //print(' 接続に成功しました。 '); $db_selected = mysql_select_db('mysql', $link); if (!$db_selected){ die('データベース選択失敗です。'.mysql_error()); } //print(' データベースを選択しました。 '); $dsn = "$db_type:host=$db_host;dbname=$db_name;charset=utf8"; try { $pdo = new PDO($dsn, $db_user,$db_pass); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); } catch(PDOException $Exception) { die('エラー :' . $Exception->getMessage()); } try { $sql= "SELECT * FROM db01 WHERE user_num = $usernum"; $stmh = $pdo->prepare($sql); $stmh->bindValue(':user_num', '$usernum', PDO::PARAM_STR ); $stmh->execute(); $count = $stmh->rowCount(); } catch (PDOException $Exception) { $count = 0; } if ($count == 0){ print "name=#該当データなし"."# #"; }else{ $row = $stmh->fetch(PDO::FETCH_ASSOC); print "name=#".$row['user_name']."#".$row['user_addr']."#"; } ?> ?>
◆Update処理 変更箇所のみ記載
try { $pdo->beginTransaction(); $sql = "UPDATE db01 SET user_name = '$name', user_addr = '$addr' WHERE user_num = $usernum"; $stmh = $pdo->prepare($sql); $stmh->bindValue(':user_name', $name, PDO::PARAM_STR ); $stmh->bindValue(':user_addr', $addr, PDO::PARAM_STR ); $stmh->execute(); $pdo->commit(); print "ok "; } catch (PDOException $Exception) { $pdo->rollBack(); print "エラー:" . $Exception->getMessage(); }
◆Insert処理 変更箇所のみ記載
補足:DBでユーザ番号をキー部にしていないので、Insert命令を行う前に、ユーザ番号が重複しないように検索処理を行ってZERO件の時にinsertする処理にしています。
// try { $pdo->beginTransaction(); $sql = "INSERT INTO db01 (user_num, user_name, user_addr) VALUES ( '$usernum', '$name', '$addr' )"; $stmh = $pdo->prepare($sql); $stmh->bindValue(':user_num', $usernum, PDO::PARAM_STR ); $stmh->bindValue(':user_name', $name, PDO::PARAM_STR ); $stmh->bindValue(':user_addr', $addr, PDO::PARAM_STR ); $stmh->execute(); $pdo->commit(); print "ok "; } catch (PDOException $Exception) { $pdo->rollBack(); print "エラー:" . $Exception->getMessage(); } } } catch (PDOException $Exception) { print "データあり"; } //
◆Delete処理 変更箇所のみ記載
// try { $pdo->beginTransaction(); $sql = "DELETE FROM db01 WHERE user_num = $usernum"; $stmh = $pdo->prepare($sql); $stmh->bindValue(':user_num', $usernum, PDO::PARAM_INT ); $stmh->execute(); $pdo->commit(); print "ok "; } catch (PDOException $Exception) { $pdo->rollBack(); print "エラー:" . $Exception->getMessage(); }
3.処理後の結果の通知
呼び出し元に処理結果を通知します。
// print "name=#".$row['user_name']."#".$row['user_addr']."#"; //
print の結果を呼び出し元に返しています。正常なら、ユーザ名と住所です。
受け取り処理を簡素化するため文字区切りで「#」を使用しています。
検索処理以外では、正常なら戻り値に「OK」を返しています。
関連記事