上一篇
html通过php读取数据库
- 行业动态
- 2025-04-29
- 3940
HTML通过PHP连接数据库(如MySQL),使用PDO/mysqli执行SQL查询,将结果集转换为数组后循环渲染至 HTML
环境配置要求
使用PHP读取数据库并在HTML中展示,需要以下环境支持:
组件 | 要求 |
---|---|
Web服务器 | Apache/Nginx等 |
PHP | 版本≥5.6(推荐7.x或8.x),需启用mysqli 或pdo_mysql 扩展 |
数据库 | MySQL/MariaDB(本文以MySQL为例) |
开发工具 | VSCode/PhpStorm/Notepad++等代码编辑器 + 浏览器 |
数据库准备
创建数据库
CREATE DATABASE test_db; USE test_db;
创建数据表
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, email VARCHAR(100) NOT NULL );
插入测试数据
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_connect 或PDO 建立与MySQL的通信通道 |
设置字符集 | 避免中文显示为乱码(如utf8 或utf8mb4 ) |
执行SQL查询 | 使用SELECT 语句获取数据,需确保表名和字段名正确 |
处理结果集 | 通过mysqli_fetch_assoc 或PDOStatement::fetch 逐行读取数据 |
HTML结构化输出 | 将数据嵌入<table> 标签,用循环动态生成表格内容 |
释放资源 | 调用mysqli_free_result 和mysqli_close 避免内存泄漏 |
常见问题与解答
问题1:如何选择mysqli和PDO?
- mysqli:适合仅需操作MySQL的场景,性能略优,支持面向对象和面向过程两种风格。
- PDO:支持多种数据库(如PostgreSQL、SQLite),提供统一接口,推荐新项目使用。
问题2:为什么HTML表格没有显示数据?
- 可能原因:
- 数据库连接参数错误(如密码错误、数据库名拼写错误)。
- SQL语句执行失败(如表名错误、权限不足)。
- 未正确输出HTML标签(如漏写
echo
或标签未闭合)。
- 排查方法:
- 检查
die()
或catch
中的错误提示。 - 在浏览器中右键查看源代码,确认HTML结构是否完整。
- 使用`var_dump($row
- 检查