繁体   English   中英

getParam检索null而不是用户数据

[英]getParam retrieving null instead of user data

我正在尝试使用getParam将新用户注册发布到数据,我使用RestClient来测试每次是否检索到值都是null:

这是我放入正文中的json数据,我确实基于application / json添加了内容类型标头:

{
  "email" : "test@test.com",
  "username" : "test",
  "password" : "123",
}

这是发布用户的代码(请注意,var_dump($ email),我用它只是为了检查$ email是否包含值,在修复后将被删除):

//add new user
$app->post('/user/add', function(Request $request, Response $response){
    $email = $request->getParam('email');
    $username = $request->getParam('username');
    $password = $request->getParam('password');

    $sql = "INSERT INTO users (email, username, password) VALUES (?, ?, ?)";

    var_dump($email);
    die ("end");
    $conn = new Database();
    $conn = $conn->createConnection();

    $stmt = $conn->prepare($sql);
    $stmt->bind_param('sss', $email, $username, $password);
    $check = $stmt->execute();
    $error = $stmt->error;

    if ($check){
        echo 'Added Successful';
    }
    if ($error != ''){
        echo $error;
    }

});

我通过/ calendar / add发布约会的操作相同,并且可以完美地工作,机器人发布方法是相同的,但是为什么发布用户没有获得价值?

getParam()仅用于查询参数,例如:yoururl.com?param1=value1

你必须用

$body = $request->getParsedBody();
echo $body['email'];

代替

DZDomi的答案不太准确,因为Request类的getParam()确实在内部调用getParsedBody()方法。 它应与POST正文中的查询字符串或数据一起使用。

如果在发送POST请求时收到NULL,请确保将客户端设置为使用application/x-www-form-urlencodedmultipart/form-data

我不了解RestClient,但是如果使用Postman ,则可以在Postman UI的“正文”选项卡上定义此信息。

邮递员用户界面

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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