网站上线后表单数据无法传输至MySQL,求技术解决方案
排查 Infinity Free 部署后表单提交重定向异常+MySQL数据无法存储问题
这种本地跑的顺风顺水,一部署就掉链子的情况真的太常见了!咱们从最容易踩坑的地方开始排查:
1. 先核对 MySQL 连接配置(90%的概率出在这)
本地XAMPP用的localhost、root空密码那套配置,在Infinity Free完全不适用!你得去主机控制面板里找数据库的专属连接信息:
- 数据库主机地址:一般是类似
sqlXXX.infinityfree.com的域名,绝不是localhost - 数据库用户名:不是本地的
root,是平台给你的专属数据库用户名 - 数据库密码:平台生成(或你自定义)的密码,不能用空密码
- 数据库名:你在平台后台创建的数据库名称
检查你的PHP连接代码,替换成平台提供的信息:
// 错误的本地配置示例 $conn = mysqli_connect("localhost", "root", "", "your_db"); // 替换为平台给的正确配置 $conn = mysqli_connect("sqlXXX.infinityfree.com", "your_db_user", "your_db_pass", "your_db_name");
另外要确认这个数据库用户拥有INSERT权限,平台默认一般会开启,但万一没开就得去控制面板手动调整。
2. 检查表单提交路径与请求状态
打开浏览器开发者工具(F12),切换到「网络」标签,提交表单后观察请求状态码:
- 如果是404:说明表单的
action路径写错了!比如本地用action="./submit.php",部署后如果文件在子目录,路径要对应调整,或者用根目录绝对路径(比如action="/submit.php",注意开头的斜杠) - 如果是403:可能是平台的安全规则拦截(比如防垃圾提交),或者submit.php文件权限设错了(一般设为644即可)
- 如果是500:肯定是PHP代码报错了,直接看第3点
3. 开启错误提示,抓具体报错信息
Infinity Free默认会关闭PHP错误显示,你根本不知道问题出在哪!在表单处理页面(比如submit.php)最顶部加上这段代码:
error_reporting(E_ALL); ini_set('display_errors', 1);
再提交一次表单,就能看到具体错误——是数据库连接失败?SQL语法错误?还是header跳转出问题?有了明确错误信息,问题就解决了一半。
4. 排查重定向的隐形坑
如果你的处理逻辑里有header("Location: success.php");这类跳转,要注意两个关键点:
- 跳转前绝对不能有任何输出!包括PHP标签外的空格、换行,或者提前echo了内容。本地可能因缓存没触发错误,但部署后服务器配置严格就会报错,导致重定向失败。
- 跳转后一定要加
exit;或die();,防止后续代码继续执行:
header("Location: success.php"); exit; // 这行必须加!
5. 确认文件上传完整性
有时候FTP上传会漏传或损坏文件,比如submit.php没传上去,或者代码的换行符、编码出了问题。可以直接在主机控制面板里打开submit.php,对比本地代码,确认内容完全一致。
按照这个顺序排查,基本上能定位并解决问题!
内容的提问来源于stack exchange,提问作者FailStorm Fail 9000
相关产品推荐
相关产品推荐

