![如何在表单提交时保留 $_GET[‘id’] 参数以确保更新操作正常执行 如何在表单提交时保留 $_GET[‘id’] 参数以确保更新操作正常执行](https://img.php.cn/upload/article/001/246/273/177078120445614.jpg)
本文详解为何 php 表单提交后 `$_get[‘id’]` 消失导致数据库更新失败,并提供安全、可靠的解决方案,包括动态构造带参数的表单 action、隐藏域传递 id 及防 sql 注入的最佳实践。
在 PHP 表单处理中,一个常见却易被忽视的问题是:当页面通过 URL 参数(如 edit.php?id=5)加载并显示待编辑数据时,用户点击“Edit User”按钮提交表单后,$_GET[‘id’] 突然为空,导致后续的 UPDATE 查询因缺少 WHERE id=… 条件而失效或影响错误记录。根本原因在于:表单默认使用 POST 方法提交,且
。
✅ 正确做法:将 id 持久化传递至 POST 请求
有两类主流且安全的实现方式,推荐优先使用第二种(隐藏域),因其更可控、兼容性更强,且不依赖服务器环境变量:
方案一:动态拼接 action URL(需谨慎处理)
将原