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

PHP表单提交MySQL数据库出现空白行问题求助

解决PHP表单提交MySQL空白行问题

核心问题排查

你的代码存在几个关键错误,直接导致数据无法正确存入数据库:

  1. 初始代码的布尔值赋值错误:isset()返回的是布尔值(true/false),存入数据库时会被转成字符串"1"/"",这就是之前出现"1"和现在空白的原因。
  2. HTML表单提交按钮无效:按钮type="button"不会触发表单提交,必须改为type="submit"。
  3. 修改后PHP的键名不匹配:$_POST的键名和HTML表单的name属性不一致(比如HTML是phonenum,PHP里用了phone),导致无法获取表单值。
  4. 预处理语句调用错误:错误使用mysqli_query($conn, $stmt),预处理语句执行只需要$stmt->execute()即可,且成功判断的变量$ds未定义。

修正后的完整代码

1. HTML表单代码

<!DOCTYPE html>
<html>
<head>
        <title> GS Entry Form </title>
        <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/water.css@2/out/water.css">
<style>
h1 {text-align: center;}
h2 {text-align: center;}
</style>
</head>

<body>
        <h1>Customer Entry Form</h1>
        <h2>Please Input Contact Information</h2>

        <form action="database.php" method="POST">
                First Name:<br />
                <input type="text" name="firstname" />

                <br /><br />

                Last Name:<br />
                <input type="text" name="lastname" />

                <br /><br />

                Email:<br />
                <input type="text" name="email" />

                <br /><br />

                Phone Number:<br />
                <input type="text" name="phonenum"/>

                <br /><br />

                Address:<br />
                <input type="text" name="address"/>

                <br /><br />

                City:<br />
                <input type="text" name="city"/>

                <br /><br />

                State:<br />
                <input type="text" name="state"/>

                <br /><br />

                Zip Code:<br />
                <input type="text" name="zipcode"/>

                <br /><br />

                <button type="submit" name="submit" value="submit">提交</button>
        </form>
</body>
</html>

修正说明:

  • 补全DOCTYPE开头的<符号,修复语法错误
  • 修复<link>标签的闭合问题
  • 将按钮类型改为submit,确保能触发表单提交

2. PHP处理代码(database.php)

<?php
include("connection.php");

// 仅在POST提交时处理数据
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // 匹配HTML表单name属性,获取数据
    $fname = $_POST['firstname'] ?? die("Firstname is missing");
    $lname = $_POST['lastname'] ?? die("Lastname is missing");
    $email = $_POST['email'] ?? die("Email is missing");
    $phone = $_POST['phonenum'] ?? die("Phone Number is missing");
    $addr = $_POST['address'] ?? die("Address is missing");
    $city = $_POST['city'] ?? die("City is missing");
    $state = $_POST['state'] ?? die("State is missing");
    $zip = $_POST['zipcode'] ?? die("Zip Code is missing");

    // 启用MySQLi错误报告,方便排查问题
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

    // 预处理语句,防止SQL注入
    $stmt = $conn->prepare("INSERT INTO CustomerInfo(FirstName, LastName, Email, PhoneNum, Address, City, State, ZipCode) VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
    // 绑定参数,确保变量顺序和字段顺序一致
    $stmt->bind_param('ssssssss', $fname, $lname, $email, $phone, $addr, $city, $state, $zip);
    $stmt->execute();

    echo 'Row Inserted! Response Recorded!';

    $stmt->close();
}
$conn->close();
?>

修正说明:

  • 用$_SERVER['REQUEST_METHOD']判断提交方式,避免非POST请求触发逻辑
  • 使用??运算符简化存在性判断,且确保$_POST键名和HTML完全匹配
  • 移除错误的mysqli_query调用,预处理语句通过execute()执行
  • 确保成功提示能正常输出

3. connection.php(仅建议优化)

<?php
$servername = "xxx";
$username = "xxx";
$password = "xxx";
$dbname = "xxx";

// 创建连接
$conn = mysqli_connect("$servername:3306",$username,$password,$dbname);

// 检查连接
if ($conn->connect_error)
{
        die("Connection failed: " .$conn->connect_error);
}
// 建议移除连接成功的echo,避免干扰提交后的页面输出
// else echo "Connection successful! "
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 03:15:59