当前位置:首页>行业动态> 正文

html与数据库连接代码

HTML需通过服务器端脚本(如PHP)连接数据库,示例代码包含配置主机、用户名、密码及数据库名,使用PDO或mysqli扩展建立连接,建议采用预处理语句防范SQL注入风险。(

数据库准备

使用MySQL数据库,创建测试表users,结构如下:

html与数据库连接代码  第1张

字段名类型说明
idINT AUTO_INCREMENT主键自增
nameVARCHAR(50)用户名
emailVARCHAR(100)邮箱地址
CREATE DATABASE testdb;
USE testdb;
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL
);

PHP连接数据库代码

<?php
// 数据库配置
$host = 'localhost';     // 数据库服务器地址
$user = 'root';          // 数据库用户名
$pass = 'password';      // 数据库密码
$dbname = 'testdb';      // 数据库名称
$charset = 'utf8mb4';    // 字符编码
// 建立连接(面向过程方式)
$conn = mysqli_connect($host, $user, $pass, $dbname);
if (!$conn) {
    die('连接失败: ' . mysqli_connect_error());
}
// 设置字符编码
mysqli_set_charset($conn, $charset);
echo "数据库连接成功<br>";
?>

HTML表单与数据处理

表单页面(insert.html)

<form method="post" action="process.php">
    姓名: <input type="text" name="name" required><br>
    邮箱: <input type="email" name="email" required><br>
    <button type="submit">提交</button>
</form>

处理逻辑(process.php)

<?php
// 引入数据库连接文件
require_once 'db_config.php'; // 假设连接代码保存在该文件
// 获取表单数据并过滤
$name = htmlspecialchars($_POST['name']);
$email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL);
// 数据插入(使用预处理语句防注入)
$stmt = $conn->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
if ($stmt) {
    $stmt->bind_param("ss", $name, $email); // 绑定参数类型s=string
    if ($stmt->execute()) {
        echo "数据插入成功,ID: " . $stmt->insert_id;
    } else {
        echo "插入失败: " . $stmt->error;
    }
    $stmt->close();
} else {
    echo "预处理失败: " . $conn->error;
}
$conn->close();
?>

数据读取与显示

查询页面(read.php)

<?php
require_once 'db_config.php'; // 引入连接配置
// 查询所有用户
$result = $conn->query("SELECT  FROM users");
if ($result) {
    echo "<table border='1'><tr><th>ID</th><th>姓名</th><th>邮箱</th></tr>";
    while ($row = $result->fetch_assoc()) {
        echo "<tr><td>{$row['id']}</td><td>{$row['name']}</td><td>{$row['email']}</td></tr>";
    }
    echo "</table>";
    $result->free();
} else {
    echo "查询失败: " . $conn->error;
}
$conn->close();
?>

错误处理与安全配置

风险类型解决方案
SQL注入使用预处理语句(prepare/bind_param)
密码明文存储改用哈希算法(如password_hash())存储密码
字符乱码设置数据库字符集为utf8mb4,并在连接时指定charset参数
错误信息泄露生产环境禁用错误详细输出,使用自定义错误页面

测试案例

  1. 插入测试:提交表单name=张三&email=zhangsan@example.com,检查数据库是否生成新记录。
  2. 查询测试:访问read.php,验证表格是否正确显示所有用户数据。

相关问题与解答

Q1: 为什么推荐使用预处理语句?
A1: 预处理语句将SQL语句与数据分离,由数据库预编译SQL结构,避免反面数据改动语句逻辑,输入name=张三' OR '1'='1时,预处理机制会自动识别为字符串而非SQL片段。

Q2: 页面出现中文乱码怎么办?
A2: 需确保三个环节的编码一致:

  1. 数据库设置:ALTER DATABASE testdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  2. 连接设置:mysqli_set_charset($conn, 'utf8mb4');
  3. HTML页面声明:`<meta charset=”