我无法从php//输入中获取请求参数,它总是返回空字符串。$ _ post也总是空的,我获得参数的唯一方法是使用$ _request,我不确定这是否是解决此问题的正确方法。
var_dump(file_get_contents("php://input"));
返回:字符串(0("
var_dump($_POST);
返回:数组(0({}
var_dump($_REQUEST);
返回:数组(2({ [" ergerg"] => 字符串(6(" ergerg" [" regergerg"] => 字符串(6(" ergreg"}
我在Postman中的要求看起来像:
POST /api/ajax.php?ergerg=ergerg®ergerg=ergreg
response
Status:200 OK
Time:192 ms
Size:236 B
ajax.php
<?php
include "config.php";
$rest_json = file_get_contents("php://input");
$obj = json_decode($rest_json);
$request = $obj->request;
if($request == 1){
$userData = mysqli_query($con, "select * from rows");
$response = array();
while ($row = mysqli_fetch_assoc($userData)) {
$response[] = $row;
}
echo json_encode($response);
}
if($request == 2){
$platform = $data->platform;
$container1 = $data->container1;
$container2 = $data->container2;
$ZPU1 = $data->ZPU1;
$ZPU2 = $data->ZPU2;
$reportId = $data->reportId;
mysqli_query($con, "INSERT INTO
rows(platform,container1,container2,
ZPU1,ZPU2,reportId)
VALUES('" . $platform . "','" . $container1 . "','" .
$container2 . "','" . $ZPU1 . "','" . $ZPU2 .
"','" . $reportId . "')");
echo "Insert successfully";
}
exit;
在配置文件中,只有与mySQL数据库的连接:
config.php
<?php
$host = "localhost"; /* Host name */
$user = "root"; /* User */
$password = "password"; /* Password */
$dbname = "dbname"; /* Database name */
$con = mysqli_connect($host, $user, $password,$dbname);
// Check connection
if (!$con) {
die("Connection failed: " . mysqli_connect_error());
}
我认为您可能对发布请求和HTTP机构的工作方式感到困惑。抱歉,如果这实际上只是您的问题中的一个错误。
HTTP请求可以包括几个关键部分:
- 请求方法 - 获取,发布,放置,删除等
- URL请求
- 标题
- 一个"正文",包含其他数据
如果您从网站提交普通的HTML表格,则将其转换为GET请求,并将参数编码到URL或POST请求中,或者将参数编码为请求正文。这就是为什么PHP具有称为$_GET
和$_POST
的数组,以检索两种情况下的详细信息 - 但实际上它们并不对应于HTTP方法,只是数据的编码方式。
php://input
代表请求主体,无论使用哪种HTTP方法。
因此,最后,对于您的示例请求:您已经指定了一个URL,其中包含一些参数;PHP将将其解码为$ _get;您已经指定了http的帖子方法;但是您尚未在请求主体中发送任何内容,因此php://输入将为空。