2016-05-23 16 views
2

SwiftのPHPファイルに情報を投稿しようとしています。 私のPHPファイルは実行されましたが、投稿された変数はPHPファイルには届きません。私は間違って何をしていますか?SwiftのPHPメソッドへのPOSTデータ

スウィフトコード:

@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']がありません。

echo文echo $a.$bも空白のままです。エラーは表示されません。

+0

あなたはエラーを取得していますか?もしそうなら、エラーが何であったか、そして/または 'responseString'が何であったかを教えてください。それは基本的な問題の診断に役立ちます。おそらくPHPコードを共有することができます。問題はそこに残ります(たとえば、実際には 'application/x-www-formurlencoded'要求を探しています)。ところで、 'NSAppTransportSecurity'を' info.plist'に設定しましたか? http://stackoverflow.com/questions/31254725/transport-security-has-blocked-a-cleartext-http/31254874#31254874 'Content-Type'ヘッダーを設定することもできますが、これは一般に厳密には要求されていません。 – Rob

+0

エラーは表示されません。私は上の私のPHPコードを追加.... into.plistとコンテンツの種類。私はXcodeでこれらのことをしますか?またはサーバー上で? –

+0

しかし、あなたは "responseString"メッセージを見るでしょう。おそらく "Successfully added"メッセージとあなたの '$ query'を表示していますか?また、 'response'を印刷すると、ステータスコード200が表示されますか? Re 'info.plist'が変更されたので、iOS 9で' http:// 'スキームを使った場合、' 'https://'があれば、それはまったくうんざりします。しかし、エラーメッセージが表示されるため、問題になることはありません。 – Rob

答えて

2

これは私のために働いた。

ビデオ - https://youtu.be/wYkZ47Rz8iU

スウィフトコード - 例

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

ありがとう、私のために働いた –