
本文详细讲解如何通过 mysqli 扩展安全、规范地从 mysql 数据库查询数据,并将其结构化输出至 html 表格,涵盖连接配置、错误处理、sql 查询与循环渲染全流程。
本文详细讲解如何通过 mysqli 扩展安全、规范地从 mysql 数据库查询数据,并将其结构化输出至 html 表格,涵盖连接配置、错误处理、sql 查询与循环渲染全流程。
在 Web 开发中,将数据库中的结构化数据以表格形式展示在网页上是一项基础但关键的任务。PHP 提供了成熟的 MySQLi 扩展来实现这一目标,但需注意:*已废弃的 `mysql_函数(如mysql_query()、mysql_fetch_array()`)绝对不可再使用**——它们自 PHP 5.5.0 起被弃用,7.0.0 版本起彻底移除,且存在严重安全隐患。
以下是一个完整、可直接运行的示例,采用面向过程风格(兼顾易读性与教学性),并遵循现代实践原则:
<?php // 1. 数据库配置(建议后续移至独立配置文件)
define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PASS', '');
define('DB_NAME', 'pro07');
// 2. 启用异常报告,便于调试(推荐开发阶段启用)
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
try {
// 3. 建立持久连接(自动选择最优协议)
$conn = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
// 4. 执行查询(明确字段名,避免 SELECT * 的隐式风险)
$sql = "SELECT id, naam, adres, geslacht, telefoon, email, woonplaats, geboortedatum
FROM alggegevens
ORDER BY id ASC";
$result = mysqli_query($conn, $sql);
} catch (mysqli_sql_exception $e) {
// 5. 统一错误处理:记录日志 + 友好提示(生产环境应隐藏敏感信息)
error_log("Database error: " . $e->getMessage());
die("数据加载失败,请稍后重试。");
}
?>
<meta charset="UTF-8"><title>Algemene gegevens gedetineerden</title><style>
table { border-collapse: collapse; width: 100%; margin-top: 1rem; }
th, td { padding: 8px 12px; text-align: left; border: 1px solid #ccc; }
th { background-color: #f2f2f2; font-weight: bold; }
tr:nth-child(even) { background-color: #f9f9f9; }
</style><h2>Detainee General Information</h2>
| ID | Naam | Adres | Geslacht | Telefoon | Woonplaats | Geboortedatum | |
|---|---|---|---|---|---|---|---|
| = htmlspecialchars($row['id']) ?> | = htmlspecialchars($row['naam']) ?> | = htmlspecialchars($row['adres']) ?> | = htmlspecialchars($row['geslacht']) ?> | = htmlspecialchars($row['telefoon']) ?> | = htmlspecialchars($row['email']) ?> | = htmlspecialchars($row['woonplaats']) ?> | = htmlspecialchars($row['geboortedatum']) ?> |
| Geen gegevens gevonden. | |||||||
✅ 关键要点说明:
- 安全性优先:使用 htmlspecialchars() 对所有输出内容进行转义,防止 XSS 攻击;禁用已淘汰的 mysql_* 函数。
- 健壮性保障:通过 mysqli_report() 启用异常模式,配合 try/catch 捕获连接与查询异常;检查结果集行数避免空表报错。
-
语义化结构:HTML 表格明确区分 和
,提升可访问性与 SEO 友好度。
- 可维护性增强:配置常量集中管理,SQL 语句清晰分段,CSS 内联样式仅作演示(实际项目建议外链)。
⚠️ 注意事项:
- 生产环境务必关闭 display_errors,启用 log_errors,避免暴露数据库凭证或结构细节;
- 若涉及用户输入参与查询(如搜索、筛选),必须使用 预处理语句(Prepared Statements) 防止 SQL 注入;
- 大数据量场景下,应添加分页逻辑(如 LIMIT + OFFSET 或游标分页),避免内存溢出。
掌握此模式后,你可轻松扩展为支持编辑、删除、导出等交互功能,为构建完整的 CRUD 管理系统打下坚实基础。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











