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

HTML表单连接数据库故障:mysqli错误排查求助

解决你的MySQLi连接失败与表单提交问题

看起来你遇到的核心问题很明确,我帮你拆解并逐个解决:

1. 最关键的错误:未引入数据库连接文件

你的order.php里直接使用了$conn变量,但这个变量是在connect.php中定义的——你根本没把连接文件引入到表单处理代码里!这就导致$conn未定义,mysqli自然会抛出错误。

修复方法:在order.php的PHP代码块最顶部,添加连接文件的引入(确保两个文件在同一目录下,路径不对的话要调整):

<?php
if(isset($_POST['submit'])) {
    // 先引入数据库连接文件
    require_once('connect.php');
    
    $FirstName=$_POST['FirstName'];
    $Surname=$_POST['Surname'];
    // ... 后续代码
}
?>

2. 修复严重的SQL注入漏洞

你现在直接把用户输入拼到SQL语句里,这是极高风险的操作,很容易被SQL注入攻击。必须用MySQLi的预处理语句来处理:

修改后的表单提交代码:

<?php
if(isset($_POST['submit'])) {
    require_once('connect.php');
    
    // 先判断参数是否存在,避免未定义变量警告
    $FirstName = isset($_POST['FirstName']) ? trim($_POST['FirstName']) : '';
    $Surname = isset($_POST['Surname']) ? trim($_POST['Surname']) : '';
    
    // 使用预处理语句安全插入数据
    $stmt = $conn->prepare("INSERT INTO users (FirstName, Surname) VALUES (?, ?)");
    $stmt->bind_param("ss", $FirstName, $Surname); // "ss"表示两个参数都是字符串类型
    
    if($stmt->execute()){
        echo "注册成功!";
    } else {
        // 输出具体错误信息,方便排查问题
        echo "插入失败: " . $stmt->error;
    }
    
    // 关闭语句和连接
    $stmt->close();
    $conn->close();
}
?>

3. 修正connect.php的语法小问题

你的connect.php里有个语法错误:$conn -> connect_error中间的空格要去掉,应该写成$conn->connect_error,否则可能导致解析失败。修改后的完整代码:

<?php
$user = 'root';
$pass ='';
$host = 'localhost';
$db = 'webassignment';

$conn = new mysqli($host, $user, $pass, $db);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
?>

4. 额外排查要点

  • 确认webassignment数据库已创建,且users表存在,FirstName和Surname字段的类型正确(比如VARCHAR)。
  • 检查本地MySQL服务是否正常启动(localhost的MySQL进程要在运行状态)。
  • 确认root用户的密码确实为空,如果你的MySQL设置了密码,要把$pass改成对应的密码。

这样调整后,应该就能解决连接失败和mysqli错误的问题,同时也提升了代码的安全性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:03:56