Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

POST data to a PHP method from Swift

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.

like image 282
Martin Vidic Avatar asked May 23 '16 21:05

Martin Vidic


1 Answers

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;
        }
    }
?>
like image 98
cwilliamsz Avatar answered Sep 20 '22 20:09

cwilliamsz