如何使用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
相关产品推荐
相关产品推荐

