我试图将数据从我的UITextFields发布到MySQL数据库。控制台说我的连接成功,但是由于某种原因数据没有发布到数据库?知道为什么吗?这是我的代码:
ViewController.h
-(IBAction)addParty:(id)sender;
@property (strong, nonatomic) IBOutlet UITextField *firstname;
@property (strong, nonatomic) IBOutlet UITextField *lastname;
@property (strong, nonatomic) IBOutlet UITextField *phone;
@property (strong, nonatomic) IBOutlet UITextField *email;
@property (strong, nonatomic) IBOutlet UITextField *guests;
@property (nonatomic, copy) NSDictionary *venueDetail;
@end
ViewController.m
- (IBAction)addParty:(id)sender
{
NSString *strURL = [NSString stringWithFormat:@"guestfirst=%@&guestlast=%@", firstname.text, lastname.text];
NSData *postData = [strURL dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d",[postData length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:@"http://myurl.com/phpfile.php"]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Current-Type"];
[request setHTTPBody:postData];
NSURLConnection *conn = [[NSURLConnection alloc]initWithRequest:request delegate:self];
if(conn)
{
NSLog(@"Connection Successful");
}
else
{
NSLog(@"Connection could not be made");
}
}
Post.php
<?Php
include('connect.php');
if (isset ($_POST["guestfirst"]) && isset ($_POST["guestlast"])){
$guestfirst = $_POST["guestfirst"];
$guestlast = $_POST["guestlast"];
} else {
$guestfirst = "none";
$guestlast = "none";
}
// Insert value into DB
$sql = "INSERT INTO events (guestfirst, guestlast) VALUES ('$guestfirst', '$guestlast');";
$res = mysql_query($sql,$conn) or die(mysql_error());
mysql_close($conn);
if($res) {
$response = array('status' => '1');
} else {
die("Query failed");
}
echo json_encode($res);
exit();
?>
最佳答案
我在您当前的代码中发现了一些问题。
在获取现有文章时,您是将查询分配给$get_events
,但是是从$events
获取。
您在插入之前正在获取。 (也许这是您的意图?)
您输出多个JSON对象
您的查询使用而不是$events
。
如果发生MySQL错误,则调用`events`
,因此您将永远不会收到表示错误的JSON响应。
您正在使用旧的MySQL库,并且脚本容易受到SQL注入的攻击。
下面是一个应该修复所有这些问题的版本,但旧库除外:
connect.php
<?php
$conn = mysql_connect('localhost', 'root', 'root');
mysql_select_db('testing');
?>
post.php
<?php
require_once("connect.php");
if (isset ($_POST["guestfirst"]) && isset ($_POST["guestlast"]))
{
$guestfirst = mysql_real_escape_string($_POST["guestfirst"]);
$guestlast = mysql_real_escape_string($_POST["guestlast"]);
}
else
{
$guestfirst = "No Entry";
$guestlast = "none";
}
$sql = "INSERT INTO `events` (guestfirst, guestlast) VALUES ('$guestfirst', '$guestlast');";
$res = mysql_query($sql, $conn) or $error = mysql_error();
if($res)
{
$ret = array(
'inserted' => true
);
}
else
{
$ret = array(
'inserted' => false,
'error' => $error
);
}
mysql_close($conn);
echo json_encode($ret);
exit();
?>
list.php(或您所说的其他名称)
<?php
require_once("connect.php");
$get_events = mysql_query("SELECT * FROM `events`", $conn);
$articles = array();
while ($row = mysql_fetch_assoc($get_events))
{
$articles[] = $row;
}
mysql_close($conn);
echo json_encode($articles);
exit();
?>
关于php - 从iOS POST到MySQL数据库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26454715/