我想在url中传递一个整数参数来更新远程数据库中记录的字段,但我遇到了错误。如何做到这一点?我的php可以工作,但如果从Swift调用就不行。如何在Swift中执行用于更新数据库记录的php文件?
下面是服务器上用于更新记录的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;
}
}
?>
如果您试图从Swift代码中运行命令行php脚本,可以使用NSTask:
var task = NSTask()
task.launchPath = "/path/to/your/script/script.php"
task.arguments = ["25"]
task.launch()
但我可能误解了你的问题,因为你没有提供太多上下文。
我找到了一种方法:
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)