Мне нужно добавить данные в мою базу данных mysql. Однако ничто не добавляется в фактическую базу данных ниже, это мой xcode и ниже, это мой php-код. Кажется, не видно, почему это не работает? Любые предложения / вы можете увидеть ошибку?
-(void) postMessage:(NSString*) teamid withPlayerid:(NSString *) playerid withFixtureid:(NSString *) fixtureid withEventid:(NSString *) eventid withHalfid:(NSString *) halfid{ //check isnt receiving two anit paramters if(teamid !=nil && playerid !=nil && fixtureid !=nil && eventid !=nil && halfid !=nil){ NSMutableString *postString = [NSMutableString stringWithString:kPostURL]; [postString appendString:[NSString stringWithFormat:@"?%@=%@",kTeamid, teamid]]; //makes kname equal to name [postString appendString:[NSString stringWithFormat:@"&%@=%@", kPlayerid , playerid]]; [postString appendString:[NSString stringWithFormat:@"?%@=%@",kFixtureid, fixtureid]]; //makes kname equal to name [postString appendString:[NSString stringWithFormat:@"&%@=%@", kEventid , eventid]]; [postString appendString:[NSString stringWithFormat:@"?%@=%@",kHalfid, halfid]]; //makes kname equal to name [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]; NSLog(@"%@",teamid); NSLog(@"%@",KTeamid); } } -(IBAction)prop1Button:(id)sender{ NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; // getting an NSString NSString *myString = [prefs stringForKey:@"1 - Prop"]; _textField3.text = myString; [self postMessage: self.textField2.text withPlayerid:self.textField3.text withFixtureid:self.textField3.text withEventid:self.textField3.text withHalfid:self.textField3.text]; _textField2.text = nil; _textField3.text = nil; dropGoalCounter ++; [[NSNotificationCenter defaultCenter] postNotificationName:@"DoUpdateLabel" object:nil userInfo:nil]; [self dismissViewControllerAnimated:YES completion:nil]; }
Вот мой PHP-код для вставки в базу данных
<?php include ("./inc/connect.inc.php"); $teamid = (int)$_POST["teamid"]; $playerid = (int)$_POST["playerid"]; $fixtureid = (int)$_POST["fixtureid"]; $eventid = (int)$_POST["eventid"]; $half = $_POST["halfid"]; $query = "INSERT INTO MatchEvent (MatchEventID, TeamID, PlayerID,FixtureID,EventID,Half) VALUES ('','9','1','8','7','$half')"; mysql_query($query) or die(mysql_error("error")); mysql_close(); ?>
РЕДАКТИРОВАТЬ!!! Теперь это вводит новую запись в базу данных, но все поля пустые, предполагая, что из-за NSString и в базе данных столбцы являются целыми числами. но когда я изменяю php на этот
$teamid = (int)$_POST["teamid"] $playerid = (int)$_POST["playerid"]; $fixtureid = (int)$_POST["fixtureid"]; $eventid = (int)$_POST["eventid"]; $half = (int)$_POST["halfid"];
Он вообще не добавляет запись в базу данных. Какие-либо предложения?
Определите проблему:
Xcode:
[request setHTTPMethod:@"POST"]; ^^^^^
PHP:
$teamid = $_GET["teamid"]; ^^^----hmmmmm. not $_POST
Кроме того, вы уязвимы для SQL-инъекций
<?php include 'connection.php'; $username = $_POST['username']; $password = $_POST['password']; $firstname = $_POST['firstname']; $lastname = $_POST['lastname']; $email = $_POST['email']; $query = "INSERT INTO Register (username,password,firstname,lastname,email) VALUES ('$username', '$password', '$firstname', '$lastname', '$email')";
$ result = mysqli_query ($ connection, $ query);
echo $query;
моя выглядит так и работает без ошибок
S [postString appendString: [NSString stringWithFormat: @ "?% @ =% @", KHalfid, halfid]]; имеет ? вместо &.