sql >> データベース >  >> RDS >> Mysql

mysqlをswiftに接続する方法は?

    swiftをmysqlおよびphpに接続するのは非常に簡単です。まず、RESTAPIが必要です。利用可能な任意のフレームワークを使用して、RESTAPIを作成できます。 PHPのみを使用してWebサービスをコーディングすることもできます。そこで、ここでは、phpフレームワークの使用法を示します。

    したがって、最初にデータベース定数を格納するファイルを作成します。

    <?php
    /**
     * Created by PhpStorm.
     * User: Belal
     * Date: 12/08/16
     * Time: 7:58 PM
     */
    
    define('DB_USERNAME', 'root');
    define('DB_PASSWORD', '');
    define('DB_HOST', 'localhost');
    define('DB_NAME', 'iphone');
    

    次に、別のphpファイルを作成してデータベース接続を作成します。

    <?php
    
    class DbConnect
    {
        private $conn;
    
        function __construct()
        {
        }
    
        /**
         * Establishing database connection
         * @return database connection handler
         */
        function connect()
        {
            require_once 'Config.php';
    
            // Connecting to mysql database
            $this->conn = new mysqli(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME);
    
            // Check for database connection error
            if (mysqli_connect_errno()) {
                echo "Failed to connect to MySQL: " . mysqli_connect_error();
            }
    
            // returing connection resource
            return $this->conn;
        }
    }
    

    ここで、データベース操作を処理するためにもう1つのファイルが必要です。

    <?php
    
    class DbOperation
    {
        private $conn;
    
        //Constructor
        function __construct()
        {
            require_once dirname(__FILE__) . '/Config.php';
            require_once dirname(__FILE__) . '/DbConnect.php';
            // opening db connection
            $db = new DbConnect();
            $this->conn = $db->connect();
        }
    
        //Function to create a new user
        public function createTeam($name, $memberCount)
        {
            $stmt = $this->conn->prepare("INSERT INTO team(name, member) values(?, ?)");
            $stmt->bind_param("si", $name, $memberCount);
            $result = $stmt->execute();
            $stmt->close();
            if ($result) {
                return true;
            } else {
                return false;
            }
        }
    
    }
    

    最後に、httpリクエストを処理するphpファイルを作成する必要があります。

    <?php
    
    //creating response array
    $response = array();
    
    if($_SERVER['REQUEST_METHOD']=='POST'){
    
        //getting values
        $teamName = $_POST['name'];
        $memberCount = $_POST['member'];
    
        //including the db operation file
        require_once '../includes/DbOperation.php';
    
        $db = new DbOperation();
    
        //inserting values 
        if($db->createTeam($teamName,$memberCount)){
            $response['error']=false;
            $response['message']='Team added successfully';
        }else{
    
            $response['error']=true;
            $response['message']='Could not add team';
        }
    
    }else{
        $response['error']=true;
        $response['message']='You are not authorized';
    }
    echo json_encode($response);
    

    iOSアプリケーションでビューを作成し、ボタンクリックでphpファイルにリクエストを送信します。コードは次のとおりです。

    //
    //  ViewController.swift
    //  SwiftPHPMySQL
    //
    //  Created by Belal Khan on 12/08/16.
    //  Copyright © 2016 Belal Khan. All rights reserved.
    //
    
    import UIKit
    
    class ViewController: UIViewController {
    
        //URL to our web service
        let URL_SAVE_TEAM = "http://192.168.1.103/MyWebService/api/createteam.php"
    
    
        //TextFields declarations
        @IBOutlet weak var textFieldName: UITextField!
        @IBOutlet weak var textFieldMember: UITextField!
    
    
    
        //Button action method
        @IBAction func buttonSave(sender: UIButton) {
    
            //created NSURL
            let requestURL = NSURL(string: URL_SAVE_TEAM)
    
            //creating NSMutableURLRequest
            let request = NSMutableURLRequest(URL: requestURL!)
    
            //setting the method to post
            request.HTTPMethod = "POST"
    
            //getting values from text fields
            let teamName=textFieldName.text
            let memberCount = textFieldMember.text
    
            //creating the post parameter by concatenating the keys and values from text field
            let postParameters = "name="+teamName!+"&member="+memberCount!;
    
            //adding the parameters to request body
            request.HTTPBody = postParameters.dataUsingEncoding(NSUTF8StringEncoding)
    
    
            //creating a task to send the post request
            let task = NSURLSession.sharedSession().dataTaskWithRequest(request){
                data, response, error in
    
                if error != nil{
                    print("error is \(error)")
                    return;
                }
    
                //parsing the response
                do {
                    //converting resonse to NSDictionary
                    let myJSON =  try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as? NSDictionary
    
                    //parsing the json
                    if let parseJSON = myJSON {
    
                        //creating a string
                        var msg : String!
    
                        //getting the json response
                        msg = parseJSON["message"] as! String?
    
                        //printing the response
                        print(msg)
    
                    }
                } catch {
                    print(error)
                }
    
            }
            //executing the task
            task.resume()
    
        }
    
    
        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view, typically from a nib.
        }
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
    
    
    }
    

    もう1つ行う必要があるのは、Info.plistファイル内に次の行を追加することです。これは、デフォルトでは保護されていないURLにリクエストを送信できないため、httpがあるため最後に行う必要があります。

    <!-- add from here -->
        <key>NSAppTransportSecurity</key>
        <dict>
            <key>NSAllowsArbitraryLoads</key>
            <true/>
            <key>NSExceptionDomains</key>
            <dict>
                <key>yourdomain.com</key>
                <dict>
                    <key>NSIncludesSubdomains</key>
                    <true/>
                    <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
                    <false/>
                </dict>
            </dict>
        </dict>
        <!-- end of the code -->
    

    出典: iOSMySQLデータベースチュートリアル



    1. Oracleで数字をローマ数字としてフォーマットする方法

    2. 追加のピボットテーブル列laravelの値を取得する

    3. 重複したレコードを、mysqlのpkまたはidまたは一意の列のないテーブルから削除します

    4. CS50:LIKE演算子、%展開による変数置換