PHP POST提交表单时First Name等字段报Undefined index错误
问题根因
PHP解析HTTP提交的POST/GET参数时,会自动对参数名做特殊字符转换:参数名里包含的空格、英文句号.会被统一替换为下划线_,之后才会存入$_POST/$_GET超全局数组。
你表单里提交失败的三个字段First Name、Last Name、Phone Number的name属性都包含空格,所以实际在$_POST数组里对应的键名是First_Name、Last_Name、Phone_Number,你用带空格的原键名去取值,自然会触发未定义索引的提示。其余字段name不带空格,所以可以正常取值。
解决方案
两种方案选其一即可:
- 推荐方案:统一修改前端表单的name属性,去掉空格,改用下划线或驼峰格式命名,前后端键名保持完全一致。
修改后的前端表单字段示例:
后端对应修改取值的键名即可:<form action="sql data.php" method="post"> Id: <input type="text" placeholder="Enter Employee Id" name="Id" required><br> Email: <input type="text" placeholder="Enter Email" name="Email" required><br> Password: <input type="text" placeholder="Enter Password" name="Password" required><br> First Name: <input type="text" placeholder="Enter First Name" name="First_Name" required><br> Last Name: <input type="text" placeholder="Enter Last Name" name="Last_Name" required><br> Address: <input type="text" placeholder="Enter Full Address" name="Address" required><br> Phone Number: <input type="text" placeholder="Enter Phone Number" name="Phone_Number" required><br> Salary: <input type="text" placeholder="Enter Salary" name="Salary" required><br> SSN: <input type="text" placeholder="Enter SSN" name="SSN" required><br> <input type="submit"> </form>Your First Name is:<?php echo $_POST["First_Name"]; ?><br> Your Last Name is:<?php echo $_POST["Last_Name"]; ?><br> Your Phone Number is:<?php echo $_POST["Phone_Number"]; ?><br> - 快速修复方案:不修改前端代码,直接把后端三个报错字段的
$_POST键名里的空格替换成下划线,直接读取$_POST["First_Name"]、$_POST["Last_Name"]、$_POST["Phone_Number"]就能拿到对应值。
排查技巧
后续遇到同类POST取值报错,可以在接收文件最开头加一行var_dump($_POST);,打印完整的POST数组结构,就能直接看到所有实际传输成功的键名和值,不需要反复猜测问题点。
内容的提问来源于stack exchange,提问作者Bray-Dun Abbey
相关产品推荐
相关产品推荐

