2015-03-30 109 views
-1

的URL从Swift中的远程数据库更新记录我想传递url中的整数参数来更新远程数据库中的记录的字段,但出现错误。如何做到这一点?我的PHP的作品,但不是如果从Swift调用。你如何执行一个PHP文件来更新Swift中的数据库记录?使用带参数

下面是服务器上更新记录的php。我如何从Swift应用程序运行这个?从网上我做这种方式,它运行(IdTask是唯一的):

http://.../updateonetasktocompleted.php?x=2

<?php 
$host = "localhost"; //database host server 
$db = "dbname"; //database name 
$user = "dbuser"; //database user 
$pass = "passwd"; //password 

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

//Check to see if we can connect to the server 
if(!$connection) 
{ 
die("Database server connection failed."); 
} 
else 
{ 
//Attempt to select the database 
$dbconnect = mysql_select_db("dbname", $connection); 

//Check to see if we could select the database 
if(!$dbconnect) 
{ 
    die("Unable to connect to the specified database!"); 
} 
else 
{ 
    $idtask_selected = $_GET['x']; 

    $query = "UPDATE ProtocolSets_Protocols SET `ProtocolSets_Protocols`.`Completed`='Yes' WHERE `ProtocolSets_Protocols`.`IdTask`= $idtask_selected";   

    $resultset = mysql_query($query, $connection); 

    echo "Successfully added "; 
    echo $query; 
} 
} 
?> 
+0

多德显示您的代码在这里。还有你得到什么错误。 – SHAZ 2015-03-30 18:49:58

回答

0

如果你想运行从您的银行代码命令行PHP脚本,你可以使用NSTask:

var task = NSTask() 
task.launchPath = "/path/to/your/script/script.php" 
task.arguments = ["25"] 
task.launch() 

但是我可能会误解你的问题,因为你没有提供很多上下文。

+0

我增加了更多细节。 – Amy 2015-03-30 20:08:53

+0

对不起,但我还是不太明白你在问什么。您是否希望将php代码移植到Swift中,或者只需从swift代码中调用现有的PHP代码? – RehcsifMit 2015-03-30 20:19:24

+0

我想从swift代码中调用现有的php代码。 – Amy 2015-03-31 16:09:08

0

我想通了,这样做的一种方法:

let currentIdTask:Int? = NSUserDefaults.standardUserDefaults().stringForKey("selectedIdTask")?.toInt() 

var url: NSString = "http://.../updateonetasktocompleted.php?x=\(currentIdTask!)" 
url = url.stringByReplacingOccurrencesOfString(" ", withString: "%20") 
url = url.stringByReplacingOccurrencesOfString("/n", withString: "%0A") 
println(url) 

var data = NSData(contentsOfURL: NSURL(string: url)!) 
var result = NSString(data: data!, encoding: NSUTF8StringEncoding) 
println(result)