用iOS前端插入MYSQL数据库的空白数据
我正在创build一个应用程序,它需要插入到MySQL数据库(托pipe在线),但是每当我尝试插入数据,数据是空白的。 没有任何错误的PHP作为我的网站前端完美的PHP脚本。
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); ?>
另外, responseString
通常会显示一些奇怪的字符,因此会影响responseString.length
值。 有没有我的代码有问题,还是这样做我的PHP?
也许PHP不parsing请求体,因为你没有设置Content-Type
请求头:
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
另一方面,我build议你使用一个iOS的HTTP库,如AFNetworking,所以你不必担心手工生成请求体。 看看它的文档 。