简体   繁体   中英

Blank data inserted into MYSQL database with iOS frontend

I'm creating an app which requires to insert a row into a mysql database (hosted online) however whenever i try to insert the data, the data is blank. there is nothing wrong with the php as my web front end works perfectly with the php script.

NSString *user = self.registerUsername.text;
NSString *password = self.registerPassword.text;
NSString *email = self.registerEmail.text;
NSString *model = [NSString stringWithFormat:@"%@", [[UIDevice currentDevice] model]];
NSString *sysVer = [NSString stringWithFormat:@"%@", [[UIDevice currentDevice] systemVersion]];

NSString *connectionURL = @"mydomain.com/Register.php";
NSLog(@"%@", connectionURL);
//this is logged correctly

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:connectionURL]];
[request setHTTPMethod:@"POST"];

NSString *insert = [[NSString alloc] initWithFormat:@"username=%@&password=%@&email=%@&model=%@&sysver=%@", user, password, email, model, sysVer];

NSLog(@"%@", insert);
[request setHTTPBody:[insert dataUsingEncoding:NSASCIIStringEncoding]];
//This is also logged correctly, giving me the right format i would expect

NSURLResponse *response;
NSError *error;
NSData *responseData = [NSURLConnection sendSynchronousRequest:request                             returningResponse:&response error:&error];

NSString *responseString = [NSString stringWithUTF8String:[responseData bytes]];
NSLog(@"%@", responseString);
//The response string is also correct, but no data is inserted into the database

NSString *success = @"success";
[success dataUsingEncoding:NSUTF8StringEncoding];

NSLog(@"%lu", (unsigned long)responseString.length);
NSLog(@"%lu", (unsigned long)success.length);

mRegister.php

<?php

header('Content-type: text/plain; charset=utf-8');

include("config/dp.php"); //<- db connection

$con = mysql_connect("127.0.0.1","user","pass");
if(! $con)
{
die('Connection Failed'.mysql_error());
}

mysql_select_db("hk", $con);

$message = "";

$username = ($_POST['username']); 
$password = ($_POST['password']);
$email = ($_POST['email']);
$model = ($_POST['model']);
$sysver = ($_POST['sysver']);

$submit = $_POST["registerform"];

$sql = "INSERT INTO members (`username`, `password`, `email`, `model`, `sysver`) VALUES ('$username', '$password', '$email', '$model', '$sysver')";
$result = mysql_query($sql);

$row = mysql_fetch_array($result);

if ($result) { $message = "success"; }
else { $message = "failed"; }

echo utf8_encode($message);

?> 

also, responseString usually shows up with some weird characters after it therefore affect the responseString.length value. Is there something wrong with my code or is it to do with my php?

Maybe PHP is not parsing the request body because you haven't set the Content-Type request header:

[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];

On the other hand I recommend you to use an HTTP library of iOS such as AFNetworking so you don't have to worry about generating the request body by hand. Check out its documentation .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM