getParam检索null而不是用户数据

时间:2018-05-05 15:57:57

标签: php slim

我试图使用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发布任命也做了同样的事情,它完美地工作,bot post方法是相同的,但为什么帖子用户没有得到价值?

2 个答案:

答案 0 :(得分:0)

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

你必须使用

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

代替

答案 1 :(得分:0)

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

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

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

Postman UI