You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Postman向PHP发送POST请求提示字段为空问题排查

问题原因

字段为空的提示是后端PHP代码逻辑顺序写反导致的,和Postman配置无关:

  • 代码先执行isset($username)/isset($password)/isset($email)判断,但这三个变量在判断节点还未被赋值(赋值代码写在了判断逻辑后面),所以无论Postman传什么值,判断结果永远是变量不存在,直接返回字段为空的提示。
  • 代码里还藏了两个会导致后续执行报错的问题:
    • 数据库插入SQL写了4个占位符(对应userID/username/email/password四个字段),但bind_param只绑定了3个变量,类型声明也只写了3个s,就算过了非空判断插入也会失败
    • 数据库连接失败的判断逻辑写法错误:mysqli_connect连接失败时返回布尔值false,不是对象,直接用$con->connect_error会触发语法报错
修复方案
  1. 调整代码顺序:先判断$_POST里的字段是否存在、从$_POST中取参数,再执行后续业务逻辑
  2. 修正数据库相关语法错误:如果userID是自增主键,插入时不需要手动传该字段,避免参数数量不匹配问题
  3. 修复后的完整后端代码如下:
<?php 
include_once 'creds.php';

$con = mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME);
// 修正连接错误判断写法
if(mysqli_connect_errno()){
  echo "Failed connecting to database".mysqli_connect_errno();
  exit;
} else {
  echo "Success connecting\n";
}

//Register User
if($_SERVER['REQUEST_METHOD'] == 'POST'){
  // 先判断POST字段是否存在、是否为空
  if(!isset($_POST['username']) || trim($_POST['username']) === ''){
    echo "Username field cannot be empty\n";
    return;
  }
  if(!isset($_POST['password']) || trim($_POST['password']) === ''){
    echo "password field cannot be empty\n";
    return;
  }
  if(!isset($_POST['email']) || trim($_POST['email']) === ''){
    echo "Email field cannot be empty\n";
    return;
  }

  // 校验通过后再取值
  $username = $_POST['username'];
  $password = $_POST['password'];
  $email = $_POST['email'];

  // 修正SQL:自增主键userID不需要手动插入,占位符和参数数量保持3个匹配
  $stmt = $con->prepare("INSERT INTO `shop`(`username`, `email`, `password`) VALUES (?,?,?)");
  // 修正参数绑定:3个字符串类型,参数顺序和SQL字段顺序一一对应
  $stmt->bind_param("sss",$username,$email,$password);

  if($stmt->execute()){
    echo "Succesfully Registered";
  } else {
    echo "Failure\n".mysqli_error($con);
  }
} 
?>
Postman配置说明

你当前的Postman配置如下图所示,使用form-data格式传参符合PHP$_POST的读取规则,替换上述修复后的代码即可正常请求,不需要调整Postman参数配置。
Postman请求截图

额外提醒:正式环境不要明文存储密码,建议使用password_hash()处理后再存入数据库。

内容的提问来源于stack exchange,提问作者Taki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 22:09:23