上一篇
html5查询mysql数据库
- 行业动态
- 2025-05-07
- 5
HTML5前端通过AJAX/Fetch向后端(如PHP/Node.js)发起请求,后端执行MySQL查询后返回JSON
技术原理
HTML5 负责前端页面展示与交互,MySQL 作为后端数据库存储数据,两者通过服务器端语言(如 PHP、Node.js、Python 等)建立连接,实现数据的查询与展示。
实现步骤
前端 HTML5 页面
- 功能:提供用户输入界面,发送查询请求并展示结果。
- 技术:使用
<form>
表单或 JavaScript(如 Fetch API/AJAX)发送异步请求。
服务器端逻辑
- 功能:接收前端请求,连接 MySQL 数据库执行查询,返回结果。
- 技术:选择服务器语言(如 PHP、Node.js),使用数据库驱动库(如
mysqli
、mysql2
、PyMySQL
)。
MySQL 数据库
- 功能:存储数据并响应查询。
- 操作:编写 SQL 语句(如
SELECT
)获取数据。
代码示例(PHP + HTML5)
前端 HTML 页面
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8">MySQL 查询示例</title> </head> <body> <h2>查询用户信息</h2> <input type="text" id="username" placeholder="输入用户名"> <button onclick="query()">查询</button> <div id="result"></div> <script> function query() { const username = document.getElementById('username').value; fetch('api.php?username=' + encodeURIComponent(username)) .then(response => response.json()) .then(data => { const result = document.getElementById('result'); if (data.length > 0) { result.innerHTML = `姓名:${data[0].name},年龄:${data[0].age}`; } else { result.innerHTML = '无匹配数据'; } }); } </script> </body> </html>
后端 PHP 脚本(api.php)
<?php header('Content-Type: application/json'); $servername = "localhost"; $username = "root"; $password = "password"; $dbname = "testdb"; // 创建连接 $conn = new mysqli($servername, $username, $password, $dbname); if ($conn->connect_error) { die(json_encode(['error' => '数据库连接失败'])); } // 获取前端参数 $username = $_GET['username'] ?? ''; // 预处理 SQL 防止注入 $stmt = $conn->prepare("SELECT name, age FROM users WHERE name = ?"); $stmt->bind_param("s", $username); $stmt->execute(); $result = $stmt->get_result(); // 返回数据 $data = []; while ($row = $result->fetch_assoc()) { $data[] = $row; } echo json_encode($data); $stmt->close(); $conn->close(); ?>
MySQL 表结构示例
字段名 | 类型 | 说明 |
---|---|---|
id | INT(11) | 主键,自增 |
name | VARCHAR(50) | 用户名 |
age | INT(11) | 年龄 |
关键技术点对比
技术组件 | 功能说明 | 推荐场景 |
---|---|---|
HTML5 | 前端页面展示与交互 | 所有前端界面 |
Fetch API | 异步发送 HTTP 请求 | 现代浏览器优先 |
AJAX (XMLHttp) | 传统异步请求方式 | 兼容旧浏览器 |
PHP/Node.js | 服务器端逻辑处理 | PHP(快速开发)/Node.js(高并发) |
MySQLi/PDO | PHP 连接 MySQL 的扩展 | PHP 环境 |
SQL 预处理 | 防止 SQL 注入攻击 | 所有数据库操作 |
相关问题与解答
问题 1:如何防止 SQL 注入攻击?
解答:
- 使用预处理语句(如
$stmt->prepare()
)和参数绑定,避免直接拼接 SQL。 - 对用户输入进行严格校验(如正则表达式、长度限制)。
- 禁用动态拼装 SQL 语句,优先使用 ORM 框架(如 Laravel、Sequelize)。
问题 2:如何处理大量数据查询导致的性能问题?
解答:
- 分页查询:前端按需加载数据(如
LIMIT
+ 偏移量)。 - 索引优化:为高频查询字段(如
name
)添加索引。 - 缓存机制:使用 Redis 或 Memcached 缓存常用查询结果。
- 异步处理:后端采用队列或多