【问题标题】:POST method variable not passingPOST 方法变量未通过
【发布时间】:2016-04-10 23:20:14
【问题描述】:

我正在尝试制作一个简单的“请求注册应用程序”,因此我通过 POST 将变量 $appUser_id 发送到 .php 文件,该文件将存储到数据库中。我工作了一段时间,但后来它停止工作,我不知道我改变了什么。它将注册到数据库中,但将 appUser_id 设置为 0,但我正在发送一个号码。

它不会抛出任何错误,但不会得到正确的变量值。

现在用 Postman 发送数据。

newRequest.php

<?php

if($_SERVER["REQUEST_METHOD"]=="POST"){
    require 'connection.php';
    makeRequestRegister();
}

function makeRequestRegister()
{
    global $connect;

    $appUser_id = $_POST["appUser_id"];

    $query = "INSERT INTO requests (appUser_id) VALUES ('$appUser_id')";

    mysqli_query($connect, $query) or die (mysqli_error($connect));
    mysqli_close($connect);

}

?>

Connection.php

<?php

define('hostname', 'localhost');
define('user', 'root');
define('password', 'password');
define('databaseName', 'belandri_TEII');

$connect = mysqli_connect(hostname, user, password, databaseName);

?>

邮递员

数据库

Pd:忘记注入和那种保护。我暂时不关心这个。

【问题讨论】:

  • 那么,POST 数组是从哪里来的?
  • 我从一个 Android 应用发送 appUser_id,它在停止工作后也能正常工作。
  • 你在下面有答案,然后看看那些。

标签: php mysql post postman


【解决方案1】:

您当前使用的是Headers 标签,但您应该使用Body 标签来获取 POST 数据。
查看以下示例:

如果您查看Postman documentation,您会发现有几种构造请求正文的方法:

表单数据

multipart/form-data 是 Web 表单用于传输数据的默认编码。这模拟了在网站上填写表格并提交。表单数据编辑器允许您为数据设置键/值对(使用键值编辑器)。您也可以将文件附加到密钥。请注意,由于 HTML5 规范的限制,文件不会存储在历史记录或集合中。您必须在发送请求时再次选择文件。

urlencoded

此编码与 URL 参数中使用的编码相同。您只需要输入键/值对,Postman 就会正确地对键和值进行编码。请注意,您不能通过此编码模式上传文件。 form-data 和 urlencoded 之间可能存在一些混淆,因此请务必先检查您的 API。

原始

原始请求可以包含任何内容。除了替换环境变量外,Postman 不会触及在原始编辑器中输入的字符串。您在文本区域中输入的任何内容都会随请求一起发送。原始编辑器允许您设置格式类型以及您应该与原始正文一起发送的正确标题。您也可以手动设置 Content-Type 标头。通常,您会在此处发送 XML 或 JSON 数据。

二进制

二进制数据允许您发送无法在 Postman 中输入的内容。例如,图像、音频或视频文件。您也可以发送文本文件。正如前面在表单数据部分中提到的,如果您通过历史记录或集合加载请求,则必须重新附加文件。

【讨论】:

  • 你是绝对正确的。我犯了多么愚蠢的错误。谢谢!
  • 嘿,我们都会犯错!如果这对你有用,请随时accept the answer,因为它让其他人知道你很高兴! :)
【解决方案2】:

看起来您可能会在标题中发送该帖子变量。请改用正文选项卡。

【讨论】:

  • 阅读@Sean3z 的回答,它是第一个发布的,并且很准确。
【解决方案3】:

您在查询中将 $appUser_id 作为字符串传递,您不需要在变量周围加上单引号,因为 双引号 在内部计算 vars。你可以这样做:

$query = "INSERT INTO requests (appUser_id) VALUES ($appUser_id)";

或者

$query = "INSERT INTO requests (appUser_id) VALUES (".$appUser_id.")";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-23
    • 1970-01-01
    • 2011-11-06
    • 2012-08-08
    • 2015-12-26
    • 1970-01-01
    • 2014-10-16
    • 2012-03-28
    相关资源
    最近更新 更多