POST data to a PHP method from Swift

12,104

This worked for me.

Video - https://youtu.be/wYkZ47Rz8iU

Swift Code - Example

let request = NSMutableURLRequest(URL: NSURL(string: "http://www.kandidlabs.com/YouTube/SwiftToMySQL/insert.php")!)
        request.HTTPMethod = "POST"
        let postString = "a=\(usernametext.text!)&b=\(password.text!)&c=\(info.text!)&d=\(number.text!)"
        request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)

        let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
            data, response, error in

            if error != nil {
                print("error=\(error)")
                return
            }

            print("response = \(response)")

            let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
            print("responseString = \(responseString)")
        }
        task.resume()

PHP Code - Example

 <?php
    $host='localhost';
    $user='root';
    $password='';

    $connection = mysql_connect($host,$user,$password);

    $usernmae = $_POST['a'];
    $pass = $_POST['b'];
    $info = $_POST['c'];
    $num = $_POST['d'];

    if(!$connection)
    {
        die('Connection Failed');
    }
    else
    {
        $dbconnect = @mysql_select_db('YoutubeTutorialDB', $connection);

        if(!$dbconnect)
        {
            die('Could not connect to Database');
        }
        else
        {
            $query = "INSERT INTO `YoutubeTutorialDB`.`Users` (`Username`, `Password`, `Info`, `FavoriteNumber`)
                VALUES ('$username','$pass','$info','$num');";
            mysql_query($query, $connection) or die(mysql_error());

            echo 'Successfully added.';
            echo $query;
        }
    }
?>
Share:
12,104
Martin Vidic
Author by

Martin Vidic

Updated on July 25, 2022

Comments

  • Martin Vidic
    Martin Vidic almost 2 years

    I'm trying to post some info to my PHP file from Swift. My php file is executed, but the posted variables just don't get through to the php file. What am I doing wrong?

    Swift code:

    @IBAction func buttonPress(sender: AnyObject) {
    
            let request = NSMutableURLRequest(URL: NSURL(string: "http://www.domain.com/php_swift_test/insert.php")!)
            request.HTTPMethod = "POST"
    
            let postString = "a=test&b=bla"
            request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
    
            let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
                data, response, error in
    
                if error != nil {
                    print("error=\(error)")
                    return
                }
    
                print("response = \(response)")
    
                let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
                print("responseString = \(responseString)")
            }
            task.resume()
        }
    

    PHP code:

    <?php
        @session_start();
        @ob_start();
    
        $host='localhost';
        $user='test';
        $password='Passw0rd99';
        $db_name="mysql_test"; 
    
        $connection = mysql_connect($host,$user,$password);
    
        $a = $_POST['a'];
        $b = $_POST['b'];
    
        if(!$connection){
            die('Connection Failed');
        }
        else{
            $dbconnect = @mysql_select_db($db_name, $connection);
    
            if(!$dbconnect){
                die('Could not connect to Database');
            }
            else{
                $query = "INSERT INTO res_club (FirstName, LastName) VALUES ('$a','$b')";
                mysql_query($query, $connection) or die(mysql_error());
    
                echo 'Successfully added.';
                echo $query;
                echo $a.$b;
            }
        }
    ?>
    

    An empty row is added to the database, with no first name and last name. The PHP file doesn't get the $_Post['a'] and b

    The echo statement, echo $a.$b stays blank too. No errors are shown.

  • Will Buffington
    Will Buffington almost 6 years
    There's a typo in this code: $usernmae = $_POST['a']; should be $username = $_POST['a'];