尝试发送 Post 方法请求时清空数据
Empty data while trying to send Post method request
我正在尝试向我发送 POST 方法请求,但是当发送 post 时,存储在数据库中的数据为空,我没有得到我拥有的值发送这是我试过的:
NSString *queryString = [NSString stringWithFormat:@"http://localhost/json/insertData.php?username=test&password=test"];
NSMutableURLRequest *theRequest=[NSMutableURLRequest requestWithURL:[NSURL URLWithString: queryString] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
[theRequest setHTTPMethod:@"POST"];
NSURLConnection *con = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
一切都很好,只有当数据发送时,我检查数据库我得到空值,请问错误在哪里。
这是我的 PHP 文件的代码:
<?php
$host = "localhost";
$user = "root";
$pass = "root";
$db = "Users";
$con = mysqli_connect($host,$user,$pass);
if(!$con)
{
die("Can't connect to mysql server!");
}
$db_select = mysqli_select_db($con,$db);
if(!$db_select)
{
die("Can't get the selected db!");
}
$id = "11";
$username = $_POST['username'];
$password = $_POST['password'];
$email = "any1@any1.com";
$gsm = "91111111";
$query = "INSERT INTO Logins VALUES($id,'$username','$password','$email',$gsm)";
$query_exec = mysqli_query($con,$query);
if(!$query_exec)
{
die("Can't insert data");
}
?>
您正在通过 GET 传递变量 username
和 password
。在您的 PHP 脚本中,您必须使用 $_GET
而不是 $_POST
:
$username = $_GET['username'];
$password = $_GET['password'];
在您的错误 url 中显示
http://localhost/json/insertData.php?username=test&password=test
你可以清楚地看到username=test&password=test
有所有数据。这意味着你的表格 method="get"
,
所以在你的代码中
$username = $_GET['username'];
$password = $_GET['password'];
这将解决您的问题。
更具体地说,在上一页的表单中,您应该更改提交表单标签以包含 method="post".
<form method="post">
因为这个问题没有答案,你也告诉我我将 $_POST 请求更改为 $_GET 但是正如我所说我想要它 post 而不是 GET。最后我犯了一个错误,我必须使用以下代码对数据进行编码:
[request setHTTPBody:[postString dataUsingEncoding:NSUTF8StringEncoding]];
添加这段代码后,数据添加成功
我正在尝试向我发送 POST 方法请求,但是当发送 post 时,存储在数据库中的数据为空,我没有得到我拥有的值发送这是我试过的:
NSString *queryString = [NSString stringWithFormat:@"http://localhost/json/insertData.php?username=test&password=test"];
NSMutableURLRequest *theRequest=[NSMutableURLRequest requestWithURL:[NSURL URLWithString: queryString] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
[theRequest setHTTPMethod:@"POST"];
NSURLConnection *con = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
一切都很好,只有当数据发送时,我检查数据库我得到空值,请问错误在哪里。
这是我的 PHP 文件的代码:
<?php
$host = "localhost";
$user = "root";
$pass = "root";
$db = "Users";
$con = mysqli_connect($host,$user,$pass);
if(!$con)
{
die("Can't connect to mysql server!");
}
$db_select = mysqli_select_db($con,$db);
if(!$db_select)
{
die("Can't get the selected db!");
}
$id = "11";
$username = $_POST['username'];
$password = $_POST['password'];
$email = "any1@any1.com";
$gsm = "91111111";
$query = "INSERT INTO Logins VALUES($id,'$username','$password','$email',$gsm)";
$query_exec = mysqli_query($con,$query);
if(!$query_exec)
{
die("Can't insert data");
}
?>
您正在通过 GET 传递变量 username
和 password
。在您的 PHP 脚本中,您必须使用 $_GET
而不是 $_POST
:
$username = $_GET['username'];
$password = $_GET['password'];
在您的错误 url 中显示
http://localhost/json/insertData.php?username=test&password=test
你可以清楚地看到username=test&password=test
有所有数据。这意味着你的表格 method="get"
,
所以在你的代码中
$username = $_GET['username'];
$password = $_GET['password'];
这将解决您的问题。
更具体地说,在上一页的表单中,您应该更改提交表单标签以包含 method="post".
<form method="post">
因为这个问题没有答案,你也告诉我我将 $_POST 请求更改为 $_GET 但是正如我所说我想要它 post 而不是 GET。最后我犯了一个错误,我必须使用以下代码对数据进行编码:
[request setHTTPBody:[postString dataUsingEncoding:NSUTF8StringEncoding]];
添加这段代码后,数据添加成功