簡體   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