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

html通过php读取数据库

HTML通过PHP连接数据库(如MySQL),使用PDO/mysqli执行SQL查询,将结果集转换为数组后循环渲染至 HTML

环境配置要求

使用PHP读取数据库并在HTML中展示,需要以下环境支持:

组件 要求
Web服务器 Apache/Nginx等
PHP 版本≥5.6(推荐7.x或8.x),需启用mysqlipdo_mysql扩展
数据库 MySQL/MariaDB(本文以MySQL为例)
开发工具 VSCode/PhpStorm/Notepad++等代码编辑器 + 浏览器

数据库准备

  1. 创建数据库

    CREATE DATABASE test_db;
    USE test_db;
  2. 创建数据表

    CREATE TABLE users (
        id INT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(50) NOT NULL,
        email VARCHAR(100) NOT NULL
    );
  3. 插入测试数据

    INSERT INTO users (name, email) VALUES
    ('张三', 'zhangsan@example.com'),
    ('李四', 'lisi@example.com'),
    ('王五', 'wangwu@example.com');

PHP连接数据库与读取数据

方法1:使用mysqli扩展(面向过程)

<?php
// 数据库连接参数
$host = 'localhost';    // 数据库地址
$user = 'root';         // 用户名
$pass = '';             // 密码
$db = 'test_db';        // 数据库名
// 建立连接
$conn = mysqli_connect($host, $user, $pass, $db);
if (!$conn) {
    die("连接失败: " . mysqli_connect_error());
}
// 设置字符集(防止中文乱码)
mysqli_set_charset($conn, 'utf8');
// 执行SQL查询
$sql = "SELECT  FROM users";
$result = mysqli_query($conn, $sql);
if (!$result) {
    die("查询失败: " . mysqli_error($conn));
}
// 输出HTML表格
echo "<table border='1'>";
echo "<tr><th>ID</th><th>姓名</th><th>邮箱</th></tr>";
while ($row = mysqli_fetch_assoc($result)) {
    echo "<tr>";
    echo "<td>{$row['id']}</td>";
    echo "<td>{$row['name']}</td>";
    echo "<td>{$row['email']}</td>";
    echo "</tr>";
}
echo "</table>";
// 释放资源
mysqli_free_result($result);
mysqli_close($conn);
?>

方法2:使用PDO扩展(面向对象)

<?php
try {
    // 数据库连接参数
    $dsn = 'mysql:host=localhost;dbname=test_db;charset=utf8';
    $user = 'root';
    $pass = '';
    // 建立PDO对象
    $pdo = new PDO($dsn, $user, $pass, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
    // 执行SQL查询
    $stmt = $pdo->query("SELECT  FROM users");
    // 输出HTML表格
    echo "<table border='1'>";
    echo "<tr><th>ID</th><th>姓名</th><th>邮箱</th></tr>";
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        echo "<tr>";
        echo "<td>{$row['id']}</td>";
        echo "<td>{$row['name']}</td>";
        echo "<td>{$row['email']}</td>";
        echo "</tr>";
    }
    echo "</table>";
} catch (PDOException $e) {
    die("数据库错误: " . $e->getMessage());
}
?>

关键步骤说明

步骤 作用描述
连接数据库 通过mysqli_connectPDO建立与MySQL的通信通道
设置字符集 避免中文显示为乱码(如utf8utf8mb4
执行SQL查询 使用SELECT语句获取数据,需确保表名和字段名正确
处理结果集 通过mysqli_fetch_assocPDOStatement::fetch逐行读取数据
HTML结构化输出 将数据嵌入<table>标签,用循环动态生成表格内容
释放资源 调用mysqli_free_resultmysqli_close避免内存泄漏

常见问题与解答

问题1:如何选择mysqli和PDO?

  • mysqli:适合仅需操作MySQL的场景,性能略优,支持面向对象和面向过程两种风格。
  • PDO:支持多种数据库(如PostgreSQL、SQLite),提供统一接口,推荐新项目使用。

问题2:为什么HTML表格没有显示数据?

  • 可能原因
    1. 数据库连接参数错误(如密码错误、数据库名拼写错误)。
    2. SQL语句执行失败(如表名错误、权限不足)。
    3. 未正确输出HTML标签(如漏写echo或标签未闭合)。
  • 排查方法
    • 检查die()catch中的错误提示。
    • 在浏览器中右键查看源代码,确认HTML结构是否完整。
    • 使用`var_dump($row
0