サーバー側も実装しなければいけなかったので覚書きです。
環境は以下の通りです。
iOS側
言語:Swift
ライブラリ:Alamofire,SwiftyJSON
サーバー側
言語:PHP
SQL:MySQL
サーバー側はロリポップのレンタルサーバーです。
サーバー側で持っているユーザー情報をiPhoneから更新する処理を実装します。
まずはPHP側から
UserIDとUserNameをPostで受け取り、以下の流れで更新処理をかけています。
1.PostでUserIDとUserNameを受信
2.受け取ったUserIDでDBを検索
3.UserIDでレコードがヒットしたら対象レコードをアップデート
updateUserInfo.php
require('connect_db.php');
$user_id = $_POST['user_id'];
$user_name = $_POST['user_name'];
$selectQuery = "SELECT COUNT(*) AS num FROM USER_ACCOUNT WHERE USER_ID = '" . $user_id . "'";
$result = SELECT($selectQuery);
while ($row = $result->fetch_assoc()) {
if($row["num"]>0){
$updateQuery = "UPDATE `USER_ACCOUNT` SET `USER_NAME`='".$user_name."',`UPDATE_TIMESTAMP`=CURRENT_TIMESTAMP WHERE `USER_ID`='".$user_id."'";
echo UPDATE($updateQuery);
}
}
$ary = array('USER_NAME'=>$user_name);
// 配列をjson_encode関数でJSON形式に変換します。
$json = json_encode($ary);
// 変換したJSON形式である$jsonを表示します。
print($json);
connect_db.php
function SELECT($query){
//$server,$user,$pass,$databaseには自分のサーバーの接続情報を入力して下さい。
$mysqli = new mysqli($server, $user, $pass, $database);
if ($mysqli->connect_error) {
echo $mysqli->connect_error;
exit();
} else {
$mysqli->set_charset("utf8");
}
$sqlSelect = $query;
if ($result = $mysqli->query($sqlSelect)) {
return $result;
}else{
printf("Errormessage: %s\n", $mysqli->error);
}
}
Swift側の処理は以下の通りです。
updateUserInfo.swift
func updateUserName(userID:String,userName:String){
//createNewUserIDUrlには自分のサーバーのURLを入力
//サーバー側の処理はUserNameを受け取り、更新した後、そのままJSON形式で返却する処理になっています。
Alamofire.request(createNewUserIDUrl, method: .post, parameters:["user_id":userID,"user_name":userName]).responseData(completionHandler: { response in
do{let json = try! JSON(data:response.result.value!)
for (key,results):(String, JSON) in json {
let userName = results.string as! String
//データを受け取った後の処理
}
}catch{
print(error)
}
})
}