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

网站迁移新URL后MySQL数据库提交查询失败求助

排查迁移后MySQL提交失效的问题

看起来你遇到了网站迁移后数据库只能读不能写的麻烦,咱们一步步来定位问题:

1. 先确认表单提交的基础逻辑是否正常

从你给出的代码片段看,核心判断是if($_POST['submit']){,先检查这部分:

  • 核对HTML表单:确保表单的method="POST",提交按钮的name="submit"(如果按钮name不对,这个判断永远不会触发)。
  • 临时加调试代码:在if($_POST['submit']){前添加:
    var_dump($_POST); exit;
    
    提交表单后看是否能接收到submit参数和其他表单字段。如果看不到,说明表单的action属性可能指向了旧URL,或者相对路径在新环境下失效了。

2. 检查数据库用户的写入权限

能读取数据说明SELECT权限没问题,但写入权限(INSERT/UPDATE/DELETE)可能在迁移时没配置到位:

  • 登录PHPMyAdmin,找到你的数据库用户,查看权限列表,确保勾选了INSERT、UPDATE、DELETE这些写入相关权限。
  • 直接执行测试写入:在$link = linkDB();后添加:
    $test_query = "INSERT INTO 你的表名 (某字段) VALUES ('测试内容')";
    if(mysqli_query($link, $test_query)){
        echo "写入成功";
    } else {
        echo "写入失败:" . mysqli_error($link);
    }
    exit;
    
    替换成你的表名和字段,看能否成功写入,同时获取具体错误信息。

3. 深挖submitDB函数的错误细节

你提到submitDB出错会die返回错误,但可能你没看到具体信息:

  • 开启PHP错误显示:在代码最开头添加:
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
    
    这样函数里的语法错误、SQL错误都会直接显示出来。
  • 检查sqlFunctions.php里的submitDB函数:
    • 核对SQL语句的字段名是否和重建后的表结构匹配(比如有没有漏加字段、拼写错误);
    • 看是否处理了特殊字符(比如没做转义导致SQL语法错误);
    • 检查表约束:比如某个字段是NOT NULL但你没传值,或者外键约束不满足。

4. 排查服务器端的限制

  • 检查PHP配置:查看post_max_size和upload_max_filesize,如果表单有大文本或文件上传,新服务器的配置可能比旧服务器小,导致POST数据被截断(可以通过phpinfo()查看当前配置)。
  • 查看服务器安全日志:比如Apache的error.log,看是否有mod_security之类的模块拦截了POST请求(比如包含特殊字符的参数)。

5. 排除会话/CSRF验证问题

如果你的表单之前用了CSRF令牌(存在session里的验证),迁移到新域名后session可能无法正常读取,导致提交被拦截。可以暂时注释掉CSRF验证逻辑,测试是否能正常提交。


优先从获取具体错误信息入手,有了明确的错误提示,定位问题会快很多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:18:31