我正在创建一个应用程序,用户点击两个按钮,然后将信息上传到godaddy上托管的外部mysql数据库。这段代码用于工作但不再用,我无法理解为什么它现在停止工作。你能看到代码有什么问题吗?或者,如果这是最好的方式去做这件事 在我的.h文件中,我有这个以及我的文本域
#define kPostURL @"http://www.mywebsite.com/dosomething.php"
#define kName @"name"
#define kMessage @"message"
在我的.m文件中,我有这段代码
-(void) postMessage:(NSString*) message withName:(NSString *) name{
//check isnt receiving two anit paramters
if(name !=nil && message !=nil){
NSMutableString *postString = [NSMutableString stringWithString:kPostURL];
[postString appendString:[NSString stringWithFormat:@"?%@=%@",kName, name]];
//makes kname equal to name
[postString appendString:[NSString stringWithFormat:@"&%@=%@", kMessage , message]];
[postString setString:[postString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:postString]];
[request setHTTPMethod:@"POST"];
postConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];
}
}
-(IBAction)post:(id)sender{
_textField3.text = @"15";
[self postMessage: self.textField2.text withName:self.textField3.text];
_textField2.text = nil;
_textField3.text = nil;
[self dismissViewControllerAnimated:YES completion:nil];
}
下面是我的php文件,这是有效的,然后我将其更改为(int)$ _ POST [“name”],看看它做了什么并且它不起作用我然后将其更改回原来的$ name = $ _POST [“name”],它不再有效。它现在创建一个新的测试条目,但是有空白的名称和消息字段,就像之前用来填充它一样。
<?php
include ("./inc/connect.inc.php");
//header('Content-type: application/json');
$name = $_POST["name"];
$message =$_POST["message"];
$query = "INSERT INTO test VALUES ('','$name','$message')";
mysql_query($query) or die(mysql_error("error"));
mysql_close();
?>
为什么要这样做?这是将条目添加到数据库中的正确方法
答案 0 :(得分:0)
就PHP而言,建议不再使用mysql_*
函数。将PDO与预备语句一起使用。
然后,这取决于您希望如何将数据发送到服务器。基本上有两种选择:
通过form-data
发送
您的数据将像任何HTML发送一样发送,您将能够在PHP中使用$_POST
。请参阅How can I upload a photo to a server with the iPhone?以了解如何在iOS中执行此操作
以XML / JSON有效载荷发送
您的数据将作为JSON在请求正文中发送(请参阅How to send json data in the Http request using NSURLRequest)
可以处理此问题的PHP脚本如下所示:
<?php
/**
* Handle POST request with JSON payload like:
*
* {"name": "a name","message":"hi"}
*/
$body = file_get_contents('php://input');
$json = json_decode($body);
$parameters = array(
':name' => $json->name,
':message' => $json->message,
);
/**
* Or alternatively handle POST request with form-data payload
*/
$parameters = array(
':name' => $_POST['name'],
':message' => $_POST['message'],
);
// Use PDO, it is recommended over mysql_* functions for database interactions
// (can be outsourced to some included file if you prefer)
$db = new PDO(
'mysql:dbname=somedb;host=database.example.com',
'username',
'password'
);
// Use prepared statements to prevent SQL injection
$statement = $db->prepare(
'INSERT INTO test (name, message) VALUES (:name, :message)'
);
$statement->execute($parameters);
$statement->closeCursor();