2015-02-23 58 views
1

我有一個textlbabieldield,我通過JSon從外部數據庫獲取數據。現在,我想讓我的用戶修改此字段並將其發佈到數據庫。但是,再次,它不起作用,數據庫沒有改變。能不能請您檢閱我的代碼:需要您的幫助,IOS Swift發佈數據到Json Alamofire

PHP代碼:

 <?php 
/* include db.config.php */ 
include_once("config.php"); 
// Get user id 
$username = isset($_POST['username']) ? mysql_real_escape_string($_POST['username']) : 「」; 
$data = isset($_POST['signature']) ? mysql_real_escape_string($_POST['signature']) : 「」; 

// get user data 
mysql_query('SET NAMES "utf8"'); 
$sql = mysql_query("UPDATE users SET signature = '$data' WHERE username='$username'"); 

die; 
mysql_close($conn); 
/* JSON Response */ 

?> 

Alamofire後FUNC:

@IBAction func Signature(sender: UIButton) { 
     var signaturesave1 = self.signature 
     let prefs:NSUserDefaults = NSUserDefaults.standardUserDefaults() 
     var username = prefs.valueForKey("USERNAME") as NSString 
     //load and parse the JSON into an array 
     Alamofire.request(.POST, "http://mywebsite/app/data/jsonsavesignature.php", parameters: ["username": username, "signature":signaturesave1]).responseJSON { (request, response, data, error) in 
      if (error != nil) 
      { 
       // got an error in getting the data, need to handle it 
       println("error calling GET usersdata") 
       println(error) 
      } 
      else { 

     self.performSegueWithIdentifier("signature_to_persoinfo", sender: self) 
    } 

     } 
} 
+0

任何人都可以提供幫助嗎? – ChinaXiaoHong 2015-02-25 07:59:17

+0

我無法在您的代碼中找到變量$ username!你也在第6行覆蓋$ id值。那個變量是$ id還是$ username? – Karthikeyani 2015-02-25 10:03:39

+0

是的你是對的,我的變量有一些問題。我編輯我的帖子,但仍然沒有工作。我想要做的是改變我的簽名爲一個特定的用戶名。 – ChinaXiaoHong 2015-02-25 10:19:04

回答

-1

我得到了答案,這要歸功於Karthikeyani您的幫助,我張貼的答案和大家一起分享:

我的PHP腳本:

<?php 

/* include db.config.php */ 
include_once("config.php"); 
// Get user id 
$username = isset($_POST['username']) ? mysql_real_escape_string($_POST['username']) : 「」; 
$data = isset($_POST['signature']) ? mysql_real_escape_string($_POST['signature']) : 「」; 

// get user data 
mysql_query('SET NAMES "utf8"'); 
$sql = mysql_query("UPDATE users SET signature = '$data' WHERE username='$username'"); 

mysql_close($conn); 
/* JSON Response */ 

?> 

我Alamofire POST請求:

@IBAction func Signature(sender: UIButton) { 
     var signaturesave1 = self.signature.text 
     let prefs:NSUserDefaults = NSUserDefaults.standardUserDefaults() 
     var username = prefs.valueForKey("USERNAME") as NSString 
     let parameters = 
      ["username": username, "signature":signaturesave1] 

     //load and parse the JSON into an array 
     Alamofire.request(.POST, "http://mywebsite.com/app/data/jsonsavesignature.php", parameters: parameters).responseJSON { (request, response, data, error) in 

       self.performSegueWithIdentifier("signature_to_persoinfo", sender: self) 

     } 
    } 
+0

你刪除了,否則條件在** Alamofire發佈請求**在更新後的代碼權利? – Karthikeyani 2015-02-26 06:08:52

+0

是的,而且我認爲Alamofire中的參數也是錯誤的。我不知道我的代碼是完整的,但它工作 – ChinaXiaoHong 2015-02-26 12:01:42

+0

哈哈哈哈哈哈哈哈哈哈哈哈哈哈。 – Karthikeyani 2015-02-26 12:11:11

2

如果要更新現有的數據,那麼你需要使用更新查詢,不插入查詢。插入查詢是插入一個新的數據。因此,將mysql_query("INSERT signature INTO users WHERE username='$username'");替換爲mysql_query("UPDATE users SET signature = '$data' WHERE username='$username'");,其中$ data是用戶的簽名。

+0

我編輯我的PHP腳本。隨着你的改變,我可以更新表格。但是mysql中的數據是錯誤的。例如,我在簽名中添加「我的名字是Charles」,但是我的數據庫中的結果是: {URL:http://mywebsite/app/data/jsonsavesignature.php} – ChinaXiaoHong 2015-02-25 10:53:47

+0

讓我知道你想在表中更新的變量和字段名稱。因爲目前您正在更新基於用戶名字段的簽名字段。但在你之前的文章中,你提到了用戶名作爲輸入。那麼你想在表格中更新什麼?簽名的價值是什麼?舉個例子。另外,除去更新查詢更改之外,刪除我在前一篇文章中提供的示例代碼。 – Karthikeyani 2015-02-25 11:00:59

+0

我的名字是:「users」。我想根據用戶名字段更新「簽名」字段,簽名的值是varchar(30)。例如:「我愛的Stackoverflow」 – ChinaXiaoHong 2015-02-25 11:04:16