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」を返しています。
関連記事
