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

如何使用PHP将HTML输入字段数据存入MySQLi数据库?

解决PHP输入数据存入数据库并展示的问题

我看你现在贴的代码只完成了数据库连接的开头部分,还缺了指定数据库、处理表单提交、执行插入逻辑这些关键步骤,咱们一步步把这个功能补全,搞定数据存入和展示的需求~

第一步:先准备好数据库和表

首先得确保你已经在MySQL里创建了对应的数据库和存储数据的表,你可以执行下面的SQL语句来创建(用phpMyAdmin或者MySQL命令行都可以):

-- 创建数据库(如果不存在的话)
CREATE DATABASE IF NOT EXISTS user_data;
USE user_data;
-- 创建存储输入数据的表
CREATE TABLE IF NOT EXISTS inputs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    content TEXT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

第二步:实现数据插入页面(submit.php)

这个页面包含表单和PHP处理逻辑,负责接收用户输入并把数据存入数据库:

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "user_data"; // 这里要填你刚才创建的数据库名

// 创建连接并指定要操作的数据库
$conn = new mysqli($servername, $username, $password, $dbname);

// 检查连接是否成功
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}
// 设置字符集,避免中文乱码
$conn->set_charset("utf8mb4");

// 处理表单提交(只有POST请求时才执行插入逻辑)
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // 获取用户输入,做基本的首尾空格过滤
    $input_content = trim($_POST["input_field"]);
    
    if (!empty($input_content)) {
        // 使用预处理语句,防止SQL注入(非常重要的安全措施)
        $stmt = $conn->prepare("INSERT INTO inputs (content) VALUES (?)");
        $stmt->bind_param("s", $input_content); // "s"表示传入的是字符串类型
        
        if ($stmt->execute()) {
            echo "数据插入成功!<a href='display.php'>点击查看已提交的数据</a>";
        } else {
            echo "插入失败,错误信息: " . $stmt->error;
        }
        
        $stmt->close();
    } else {
        echo "输入内容不能为空哦!";
    }
}

$conn->close();
?>

<!-- HTML表单部分 -->
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <label for="input_field">请输入内容:</label>
    <input type="text" id="input_field" name="input_field" required>
    <button type="submit">提交数据</button>
</form>

第三步:实现数据展示页面(display.php)

这个页面负责从数据库读取已插入的数据并展示出来:

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "user_data";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}
$conn->set_charset("utf8mb4");

// 查询所有数据,按提交时间倒序排列
$sql = "SELECT id, content, created_at FROM inputs ORDER BY created_at DESC";
$result = $conn->query($sql);
?>

<!DOCTYPE html>
<html>
<head>
    <title>已提交的数据列表</title>
</head>
<body>
    <h1>已提交的数据</h1>
    <?php if ($result->num_rows > 0): ?>
        <ul>
            <?php while($row = $result->fetch_assoc()): ?>
                <li>
                    <strong>序号:</strong> <?php echo $row["id"]; ?><br>
                    <strong>内容:</strong> <?php echo htmlspecialchars($row["content"]); ?><br>
                    <strong>提交时间:</strong> <?php echo $row["created_at"]; ?>
                </li>
            <?php endwhile; ?>
        </ul>
    <?php else: ?>
        <p>还没有任何提交的数据哦~</p>
    <?php endif; ?>
    <a href="submit.php">返回提交页面</a>
</body>
</html>

<?php
$conn->close();
?>

几个关键注意点

  • 必须指定数据库:你原来的代码只连接了MySQL服务器,但没告诉它要操作哪个数据库,这是存不了数据的核心问题之一
  • 安全问题:用预处理语句防止SQL注入,展示数据时用htmlspecialchars()防止XSS攻击,这些都是开发时的基本安全习惯
  • 字符集设置:一定要设置utf8mb4字符集,避免中文或特殊字符出现乱码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:56:36