ios - 从 Swift 将数据 POST 到 PHP 方法

标签 ios swift nsurlsession

我正在尝试从 Swift 向我的 PHP 文件发布一些信息。 我的 php 文件已执行,但发布的变量只是没有通过 php 文件。我做错了什么?

快速代码:

@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代码:

<?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;
        }
    }
?>

一个空行被添加到数据库中,没有名字和姓氏。 PHP 文件没有得到 $_Post['a'] 和 b

echo 语句 echo $a.$b 也保持空白。没有显示错误。

最佳答案

这对我有用。

视频 - https://youtu.be/wYkZ47Rz8iU

Swift 代码 - 示例

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 代码 - 示例

 <?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;
        }
    }
?>

关于ios - 从 Swift 将数据 POST 到 PHP 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37400639/

相关文章:

ios - URLSession 委托(delegate)函数totalBytesExpectedToWrite 始终返回-1

ios - 如何在 Objective C 中将 NSArray 中的内容分成两个新的内容?

ios - UITableView 与 UITextView 对齐

swift - 移除物理体

ios - 上下文闭包类型 '(Data?, URLResponse?, Error?) -> Void' 需要 3 个参数,但闭包主体中使用了 1 个参数

ios - 如果任务被取消,则不执行该 block

ios - 中心两行按钮标题

ios - 基于位置的警报/通知 ios

ios - 如何以编程方式将 arkit 对象保存为 .dae 格式

arrays - 在 Swift4 中按日期过滤事件