html中怎么运行sql语句

来源:网络学院作者:深圳程序员头衔:程序员
导读:本期聚焦于小伙伴创作的《html中怎么运行sql语句》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《html中怎么运行sql语句》有用,将其分享出去将是对创作者最好的鼓励。

HTML本身是用于构建网页结构的标记语言,没有内置的数据库操作能力,无法直接运行SQL语句。要实现在HTML相关场景下执行SQL语句,需要结合其他技术栈配合实现,常见的实现方式分为前端本地存储和前后端协同两种大类。

html中怎么运行sql语句

前端本地运行SQL语句的方法

如果仅需要在浏览器本地存储和操作数据,不需要和服务器数据库交互,可以使用Web SQL或者IndexedDB配合类SQL语法实现,不过Web SQL已经被W3C废弃,目前更推荐使用IndexedDB,或者使用第三方封装库简化操作。

使用Web SQL执行SQL语句

Web SQL提供了类似SQL的语法操作浏览器本地数据库,不过仅部分浏览器支持,适合简单的本地数据缓存场景。

// 打开本地数据库,参数分别是数据库名、版本号、描述、大小
var db = openDatabase('testDB', '1.0', '测试数据库', 2 * 1024 * 1024);
// 执行SQL语句创建表
db.transaction(function (tx) {
    tx.executeSql('CREATE TABLE IF NOT EXISTS user (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)');
    // 插入数据
    tx.executeSql('INSERT INTO user (name, age) VALUES (?, ?)', ['张三', 25]);
    // 查询数据
    tx.executeSql('SELECT * FROM user', [], function (tx, results) {
        var len = results.rows.length;
        for (var i = 0; i < len; i++) {
            console.log(results.rows.item(i).name, results.rows.item(i).age);
        }
    });
});

使用sql.js在浏览器端运行SQL

sql.js是SQLite的JavaScript移植版本,可以在浏览器中直接运行SQL语句,操作内存中的数据库,不需要后端支持。

// 引入sql.js库后初始化
initSqlJs().then(function (SQL) {
    // 创建数据库实例
    var db = new SQL.Database();
    // 执行建表SQL
    db.run('CREATE TABLE test (id INT, name TEXT)');
    // 插入数据
    db.run('INSERT INTO test VALUES (1, '测试数据')');
    // 查询数据
    var result = db.exec('SELECT * FROM test');
    console.log(result);
});

前后端协同运行SQL语句的方法

如果需要操作服务器端的数据库,比如MySQL、PostgreSQL等,必须通过HTML结合JavaScript调用后端接口,由后端执行SQL语句后返回结果,这是生产环境最常用的方式。

前端HTML和JavaScript部分

前端通过fetch或者XMLHttpRequest调用后端接口,传递需要执行的SQL相关参数,这里需要注意不能直接把原始SQL暴露给前端,避免SQL注入风险,通常前端只传递操作参数,由后端拼接安全的SQL。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>调用后端执行SQL</title>
</head>
<body>
    <button onclick="queryData()">查询用户数据</button>
    <div id="result"></div>
    <script>
        function queryData() {
            // 调用后端接口,传递查询参数,而非原始SQL
            fetch('/api/queryUser', {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json'
                },
                body: JSON.stringify({
                    age: 18
                })
            })
            .then(res => res.json())
            .then(data => {
                document.getElementById('result').innerText = JSON.stringify(data);
            });
        }
    </script>
</body>
</html>

后端PHP示例(处理SQL执行)

后端接收前端参数后,使用预处理语句执行SQL,避免注入风险,这里以PHP操作MySQL为例。

<?php
// 连接数据库
$conn = new mysqli('127.0.0.1', 'root', 'password', 'test_db');
if ($conn->connect_error) {
    die('连接失败: ' . $conn->connect_error);
}
// 获取前端传递的参数
$input = json_decode(file_get_contents('php://input'), true);
$age = $input['age'];
// 使用预处理语句执行SQL,避免注入
$stmt = $conn->prepare('SELECT * FROM user WHERE age > ?');
$stmt->bind_param('i', $age);
$stmt->execute();
$result = $stmt->get_result();
$data = [];
while ($row = $result->fetch_assoc()) {
    $data[] = $row;
}
// 返回JSON结果
header('Content-Type: application/json');
echo json_encode($data);
$stmt->close();
$conn->close();
?>

注意事项

  • 绝对不要在前端直接拼接原始SQL发送给后端,否则会产生严重的SQL注入漏洞,所有SQL语句必须在后端通过预处理或者ORM框架执行。
  • Web SQL兼容性较差,不建议在生产环境使用,本地存储优先选择IndexedDB或者LocalStorage。
  • sql.js操作的是内存数据库,页面刷新后数据会丢失,适合临时数据处理场景,不适合持久化存储。
  • 如果是静态HTML页面,没有后端支持,无法实现服务器端数据库的操作,只能使用前端本地存储相关方案。

不同方案对比

方案适用场景优点缺点
Web SQL简单本地数据缓存语法接近原生SQL,上手快已被废弃,兼容性差
sql.js浏览器端临时数据处理无需后端,支持完整SQL语法数据不持久化,页面刷新丢失
前后端协同生产环境数据操作支持持久化存储,安全性高需要后端开发,部署成本更高

HTMLSQLJavaScriptPHP数据库操作修改时间:2026-07-09 09:00:33

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。