【问题标题】:REST Webservice in PHP MySQL JSON - Inserting empty values to databasePHP MySQL JSON 中的 REST Web 服务 - 将空值插入数据库
【发布时间】:2016-02-13 12:22:08
【问题描述】:

我在 Google Chrome 上使用 Advanced Rest Client 来处理 POST 请求。 一切正常,我什至收到消息User has been successfully registered!,但在查看数据库时,我看到的是,attributesfirstnamelastname 等的值只是空白,尽管查询已成功发出。 怎么了 ?

create.php

<?php

require_once 'connect.php';


if($_SERVER['REQUEST_METHOD'] == 'POST'){
// Get post data`
    $firstName = isset($_POST['firstname']) ? mysqli_real_escape_string($connection, $_POST['firstname']) : "";
    $lastName = isset($_POST['lastname']) ? mysqli_real_escape_string($connection, $_POST['lastname']) : "";
    $email = isset($_POST['email']) ? mysqli_real_escape_string($connection, $_POST['email']) : "";
    $password = isset($_POST['password']) ? sha1(md5(mysqli_real_escape_string($connection, $_POST['password']))) : "";
    $status = 0; // Here we set by default status In-active.
    // Save data into database
    $query = "INSERT INTO users (firstname,lastname,email,password,status) VALUES ('{$firstName}',
    '{$lastName}','{$email}','{$password}','{$status}')";

    $insert = mysqli_query($connection, $query);

    if($insert){
        $data = array("result" => 1, "message" => "User has been successfully registered!");
        } else {
        $data = array("result" => 0, "message" => "Error!");
    }
}
else {
    $data = array("result" => 0, "message" => "Incorrect Request Method!");
}

mysqli_close($connection);
/* JSON Response */
header('Content-type: application/json');
echo json_encode($data);
?>

【问题讨论】:

  • 我不知道“Advanced Rest Client”,但您似乎将数据作为标头发送。要通过$_POST superglobal 获取它们,您应该将它们作为(表单)数据与您的请求一起发送
  • 是的!我想通了并修复了它。即使作为表单数据发送也会插入 EMPTY 值。我已经更新了截图。请看一看。
  • 将生成的查询放入输出中并检查查询是否正确。

标签: php mysql json rest


【解决方案1】:

将您的参数放入请求正文,而不是标头。也许这是在您的 HTTP 客户端的“有效负载”部分完成的?另外,由于您将数据作为 JSON 发送,您是否需要在 PHP 中 json_decode POST 数据?

尝试通过转储$_POST 数组中的空白值来进行调试。

此外,您可能希望通过验证发送的数据来使您的后端更加健壮。例如,不要对收到的每个参数都接受 NULL 值。

【讨论】:

  • 我现在一直在尝试 Payload。结果相同。空的。当我发现骨架工作时,我会拥有强大的后端。,
  • 注意到您正在以 JSON 格式发送数据。 PHP端需要json_decode吗?
【解决方案2】:

也许问题出在我的Advanced Rest Client 我将payload 作为application/json 发送,它没有获得POST 数据,但是将Content-Type 更改为application/x-www-form-urlencoded,一切正常!

【讨论】:

  • 是的。另一种选择是在 PHP 中解码 JSON。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-01
  • 2011-12-07
  • 2012-12-11
  • 2023-04-01
  • 1970-01-01
  • 2013-05-17
  • 2020-11-23
相关资源
最近更新 更多