HTML表单提交后PHP服务未接收数据也未写入MySQL是什么原因?
错误原因及修复方案
1. 核心问题:HTML表单action地址配置错误
你当前表单的action属性取值为action="localhost/test.php",缺少HTTP协议前缀,浏览器会将其识别为相对路径而非绝对HTTP地址:
- 若你直接在本地打开HTML文件(地址栏为
file:///开头的本地路径),浏览器会将提交地址解析为file://localhost/test.php,根本不会请求你部署在本地的PHP HTTP服务,后端收不到任何请求自然不会写入数据库 - 若你的HTML托管在本地HTTP服务下,该地址会被解析为
当前页面路径/localhost/test.php,同样无法指向正确的PHP接口
修复方案:将form标签的action属性改为正确的接口地址:
- 用绝对路径写法:
action="http://localhost/test.php",如果你的本地服务用了非80端口,还要加上对应端口,比如8080端口就写http://localhost:8080/test.php - 如果HTML和PHP文件在同个HTTP服务的同层级目录下,直接用相对路径即可:
action="test.php"
2. 补充:PHP代码逻辑问题(对应你直接访问接口插入NULL的现象)
你的PHP代码中if(isset($_POST['theme']) && isset($_POST['year']))的大括号仅包裹了变量赋值逻辑,后续数据库操作无论判断是否成立都会执行:
- 直接GET访问PHP接口时,
$_POST中无对应参数,判断不成立,$theme和$year为未定义变量,绑定参数时会被当作NULL处理,就会插入全空记录 - 如果需要仅当参数存在时才执行数据库操作,需要把所有数据库相关代码都包裹在if的大括号内。
内容的提问来源于stack exchange,提问作者olvrwn
相关产品推荐
相关产品推荐

