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

表单无法提交数据至MySQL数据库的技术求助

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

问题1:HTML表单嵌套错误+缺少提交按钮

你的HTML代码嵌套了两个<form>标签,这属于无效HTML结构,浏览器无法正确解析,直接导致表单数据无法通过POST提交到后端。同时原代码没有提交按钮,用户无法触发提交操作。

错误代码片段

<form method="post" action=""><br>
    <center><h1>BEGINNING INVENTORY</h1></center>
    <br>
    <form>
        <!-- 表单控件 -->
    </form>

修复后代码

<form method="post" action="">
    <center><h1>BEGINNING INVENTORY</h1></center>
    <br>
    <div class="div4">
        <label for="barid">Bar ID: </label><br>
        <input type="number" class="textbox" id="barid" name="barid" style="width: 690px" />
    </div>
    <div class="div2">
        <label for="barname">Bar Name: </label>
        <input type="text" class="textbox" id="barname" name="barname" style="width: 690px" />
        <br>
    </div>
    <div class="div4">
        <label for="man_name">Manager: </label>
        <input type="text" class="textbox" id="man_name" name="man_name" style="width: 690px" />
        <br>
    </div>
    <div class="div2">
        <label for="txt_date">Date (yyyy-mm-dd): </label>
        <input type="text" class="textbox" id="txt_date" name="txt_date" style="width: 690px" />
    </div>
    <!-- 添加提交按钮,触发表单提交 -->
    <div style="margin-top: 15px;">
        <button type="submit">提交数据</button>
    </div>
</form>

问题2:PHP SQL语句语法错误

INSERT语句的VALUES部分缺失右括号,导致SQL语法报错:

错误代码片段

$sql = $con->prepare("INSERT INTO beginv (barID, barName, manName, dateUploaded) VALUES (:barid, :barname, :manname, :dateUp");

修复后代码

$sql = $con->prepare("INSERT INTO beginv (barID, barName, manName, dateUploaded) VALUES (:barid, :barname, :manname, :dateUp)");

问题3:PDO预处理语句执行方式错误

你使用$con->exec($sql)执行预处理语句是错误的,exec()仅适用于直接执行SQL字符串,预处理语句需要调用自身的execute()方法:

错误代码片段

if($con->exec($sql)) {
    echo "Request sent successfully";
}

修复后代码

if($sql->execute()) {
    echo "Request sent successfully";
}

可选优化:检查POST数据合法性

为避免未定义索引警告,建议在绑定参数前先检查POST数据是否存在:

$barid = $_POST["barid"] ?? null;
$barname = $_POST["barname"] ?? null;
$manname = $_POST["man_name"] ?? null;
$dateUp = $_POST["txt_date"] ?? null;

$sql->bindParam(':barid', $barid);
$sql->bindParam(':barname', $barname);
$sql->bindParam(':manname', $manname);
$sql->bindParam(':dateUp', $dateUp);

完整修复后的PHP代码

<?php
$host = "localhost";
$username = "root";
$password = "";
$dbname = "database";

try {
    $con = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
    $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // 仅处理POST请求
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        $barid = $_POST["barid"] ?? null;
        $barname = $_POST["barname"] ?? null;
        $manname = $_POST["man_name"] ?? null;
        $dateUp = $_POST["txt_date"] ?? null;

        $sql = $con->prepare("INSERT INTO beginv (barID, barName, manName, dateUploaded) VALUES (:barid, :barname, :manname, :dateUp)");
        $sql->bindParam(':barid', $barid);
        $sql->bindParam(':barname', $barname);
        $sql->bindParam(':manname', $manname);
        $sql->bindParam(':dateUp', $dateUp);

        if($sql->execute()) {
            echo "Request sent successfully";
        }
    }
} catch(PDOException $e) {
    echo "Error: " . $e->getMessage();
}
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 21:40:45