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

网站无法向MySQL数据库插入数据,请求排查PHP代码问题

无法将表单数据插入MySQL数据库的问题排查与修复

核心问题分析

  • 表单字段与PHP接收不匹配:HTML中textarea的name是aptComment,但PHP里错误地使用$_POST['aptText']获取值;同时PHP尝试获取$_POST['aptStat'],但表单中无对应字段,导致两个变量未定义,直接破坏SQL语法。
  • SQL语法错误:字符串类型的字段值未用单引号包裹,MySQL会将其识别为列名而非字符串,触发语法错误。
  • 未校验数据库连接:未确认mysqli_connect是否成功,若连接失败(如密码错误、数据库不存在),后续操作直接失效。
  • 无错误调试信息:仅返回成功/失败状态,无法获取具体错误原因,难以定位问题。

修正后的代码

PHP代码(book.inc.php)

<?php
session_start();
// 连接数据库并校验连接状态
$con = mysqli_connect("localhost","root","","yellowstudios");
if (!$con) {
    die("数据库连接失败: " . mysqli_connect_error());
}

if(isset($_POST['submit'])) {
    // 匹配HTML表单字段名,给不存在的字段设置默认值
    $name = $_POST['UserName'];
    $contact = $_POST['UserContact'];
    $email = $_POST['UserEmail'];
    $date = $_POST['aptDateTime'];
    $artist = $_POST['artistName'];
    $text = $_POST['aptComment']; // 修正为表单中实际的name值
    $stat = 'pending'; // 可根据需求设置默认状态,或在HTML中添加隐藏字段传递

    // 使用预处理语句,避免SQL注入与语法错误
    $query = "INSERT INTO UserRecord (UserName, UserContact, UserEmail, aptDateTime, artistName, aptText, aptStat) 
              VALUES (?, ?, ?, ?, ?, ?, ?)";
    $stmt = mysqli_prepare($con, $query);
    mysqli_stmt_bind_param($stmt, "sssssss", $name, $contact, $email, $date, $artist, $text, $stat);
    $query_run = mysqli_stmt_execute($stmt);

    if($query_run)
    {
        $_SESSION['status'] = "预约提交成功!";
        header("Location: book.output.php");
        exit; // 跳转后终止代码执行
    }
    else
    {
        // 返回具体错误信息用于调试
        $_SESSION['status'] = "预约提交失败!错误信息: " . mysqli_error($con);
        header("Location: book.output.php");
        exit;
    }
    mysqli_stmt_close($stmt);
}
mysqli_close($con);
?>

可选:HTML表单添加状态字段

若需自定义aptStat的值,可在表单中添加隐藏输入:

<input type="hidden" name="aptStat" value="pending">

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 20:25:52