3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AlamofireとSwiftyJSONでサーバーと通信(サーバー側はPHPで実装)

Last updated at Posted at 2019-06-02

サーバー側も実装しなければいけなかったので覚書きです。

環境は以下の通りです。

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)
            }
        })
    }

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?