当前位置: 首页 > news >正文

【HTML+CSS】使用HTML与后端技术连接数据库

目录

一、概述

1.1 HTML前端

1.2 后端技术

1.3 数据库

二、HTML表单示例

三、PHP后端示例

3.1 连接数据库

3.2 接收数据并插入数据库

四、安全性

4.1 防止SQL注入

4.2 数据验证与清洗

五、优化

5.1 索引优化

5.2 查询优化

六、现代Web开发中的最佳实践

6.1 使用ORM(对象关系映射)

6.2 前后端分离

6.3 异步通信(AJAX/Fetch API)

七、结论


在Web开发中,经常需要从前端(HTML/CSS/JavaScript)向后端发送请求,并由后端处理这些请求,包括与数据库的交互。虽然HTML本身无法直接连接数据库,但可以通过表单提交、AJAX请求等方式与后端服务器进行通信,再由后端脚本执行数据库操作。本文将简要介绍这一过程,并以PHP和MySQL为例进行说明。

69144e91b8cb41cb9fc75c9f77373b6f.png

一、概述

1.1 HTML前端

HTML负责构建网页的骨架,提供用户交互的表单等元素。用户通过表单输入数据,并通过表单的提交(submit)事件将数据发送到后端。

1.2 后端技术

后端技术(如PHP、Node.js等)负责接收前端发送的请求,执行相应的业务逻辑(如数据库查询、数据验证等),并将结果返回给前端。

1.3 数据库

数据库(如MySQL、MongoDB等)用于存储和管理数据。后端脚本通过数据库查询语言(如SQL)与数据库进行交互,获取或更新数据。

二、HTML表单示例

首先,我们创建一个简单的HTML表单,用于收集用户信息。

<!DOCTYPE html>  
<html>  
<head>  <title>用户注册</title>  
</head>  
<body>  <form action="register.php" method="post">  用户名: <input type="text" name="username" required><br>  密码: <input type="password" name="password" required><br>  <input type="submit" value="注册">  </form>  
</body>  
</html>

在这个例子中,表单的action属性指定了处理表单数据的PHP脚本(register.php),而method属性指定了数据提交的方式(POST)。

三、PHP后端示例

接下来,我们编写register.php脚本,用于接收表单数据,并与MySQL数据库进行交互。

3.1 连接数据库

首先,我们需要连接到MySQL数据库。

<?php  
$servername = "localhost";  
$username = "your_username";  
$password = "your_password";  
$dbname = "your_dbname";  // 创建连接  
$conn = new mysqli($servername, $username, $password, $dbname);  // 检查连接  
if ($conn->connect_error) {  die("连接失败: " . $conn->connect_error);  
}  
?>
3.2 接收数据并插入数据库

然后,我们接收表单提交的数据,并将其插入到数据库中。

<?php  
// 假设前面的数据库连接代码已经存在  // 接收数据  
$username = $_POST['username'];  
$password = $_POST['password']; // 注意:实际应用中需要对密码进行加密处理  // 插入数据  
$sql = "INSERT INTO users (username, password) VALUES ('$username', '$password')";  if ($conn->query($sql) === TRUE) {  echo "新记录插入成功";  
} else {  echo "Error: " . $sql . "<br>" . $conn->error;  
}  $conn->close();  
?>

四、安全性

4.1 防止SQL注入

在上面的PHP示例中,直接将用户输入插入到SQL查询中是非常危险的,因为这可能导致SQL注入攻击。为了防止这种情况,应该使用预处理语句(prepared statements)和参数化查询。

<?php  
// ... 数据库连接代码 ...  // 准备和绑定  
$stmt = $conn->prepare("INSERT INTO users (username, password) VALUES (?, ?)");  
$stmt->bind_param("ss", $username, $hashedPassword);  // 设置参数并执行  
$username = $_POST['username'];  
$password = $_POST['password'];  
$hashedPassword = password_hash($password, PASSWORD_DEFAULT); // 加密密码  $stmt->execute();  if ($stmt->affected_rows > 0) {  echo "新记录插入成功";  
} else {  echo "插入失败";  
}  $stmt->close();  
$conn->close();  
?>
4.2 数据验证与清洗

在将用户输入存储到数据库之前,应该进行适当的数据验证和清洗,以确保数据的合法性和安全性。这包括检查数据类型、长度、格式以及是否存在潜在的恶意代码。

五、优化

5.1 索引优化

为了提高数据库查询的效率,应该为经常查询的列添加索引。但是,过多的索引会减慢写入速度并增加数据库的存储空间需求,因此需要谨慎使用。

5.2 查询优化

编写高效的SQL查询语句是优化数据库性能的关键。应该避免在查询中使用SELECT *,尽量只选择需要的列;同时,注意WHERE子句中的条件顺序和类型,以便数据库能够更有效地利用索引。

六、现代Web开发中的最佳实践

6.1 使用ORM(对象关系映射)

在现代Web开发中,许多开发者选择使用ORM工具来简化数据库操作。ORM允许开发者使用面向对象的方式来操作数据库,而不需要直接编写SQL语句。这不仅可以提高开发效率,还可以减少SQL注入等安全风险。

6.2 前后端分离

随着Web应用规模的扩大和复杂度的增加,前后端分离成为一种越来越流行的开发模式。在这种模式下,前端和后端分别由不同的团队或技术栈来开发,并通过API接口进行通信。这样可以提高开发效率、降低耦合度,并使得前端和后端可以独立地进行升级和维护。

6.3 异步通信(AJAX/Fetch API)

为了提高用户体验和减少页面加载时间,现代Web应用通常采用异步通信的方式来与服务器交换数据。AJAX和Fetch API是实现异步通信的两种常用技术。它们允许在不重新加载整个页面的情况下与服务器交换数据,并更新页面上的部分内容。

七、结论

HTML本身并不直接支持数据库操作,但它可以通过与后端技术的结合来实现与数据库的交互。在开发过程中,我们需要注意安全性、优化以及遵循现代Web开发的最佳实践。只有这样,我们才能开发出既安全又高效的Web应用。

相关文章:

【HTML+CSS】使用HTML与后端技术连接数据库

目录 一、概述 1.1 HTML前端 1.2 后端技术 1.3 数据库 二、HTML表单示例 三、PHP后端示例 3.1 连接数据库 3.2 接收数据并插入数据库 四、安全性 4.1 防止SQL注入 4.2 数据验证与清洗 五、优化 5.1 索引优化 5.2 查询优化 六、现代Web开发中的最佳实践 6.1 使用…...

「2024·我的成长之路」:年终反思与展望

文章目录 1. 前言2.创作历程2.1 摆烂期2.2 转变期3. 上升期 2. 个人收获3.经验分享4. 展望未来 1. 前言 2025年1月16日&#xff0c;2024年博客之星入围公布&#xff0c;很荣幸获得了这次入围的机会。2024年对我个人是里程碑的一年&#xff0c;是意义非凡的一年&#xff0c;是充…...

C#PaddleOCRSharp使用

using PaddleOCRSharp;namespace PaddleOCRSharpDemo {internal class Program{static void Main(string[] args){//中英文模型V3模型OCRModelConfig config null;//OCR参数OCRParameter oCRParameter new OCRParameter();oCRParameter.cpu_math_library_num_threads 6;//预…...

【Excel】【VBA】Reaction超限点筛选与散点图可视化

【Excel】【VBA】Reaction超限点筛选与散点图可视化 功能概述 这段代码实现了以下功能&#xff1a; 从SAFE输出的结果worksheet通过datalink获取更新数据从指定工作表中读取数据检测超过阈值的数据点生成结果表格并添加格式化创建可视化散点图显示执行时间 流程图 #mermaid-…...

京华春梦,守岁这方烟火人间

文章目录 准备篇温度公共交通人流情况年货采购 文化体验传统庙会博物馆与展览烟花灯会祈福仪式民俗集市现代氛围其他活动 美食盛宴传统美食与特色小吃传统老字号京城新宠特色小吃街多元美食街 准备篇 温度 北京春节期间气温较低&#xff0c;室外通常在零下几度到零上几度之间…...

学Python的人…

学Python的人… 一、Python能干什么&#xff1f; 1.爬虫&#xff1a;前几年&#xff0c;深度学习还没发展起来的时候&#xff0c;书店里Python就和爬虫挂钩&#xff0c;因为Python写爬虫确实方便。 2.数据分析&#xff1a;Python有各种的数据分析库可以方便使用&#xff0…...

WebSocket 和 Socket 的区别

一、协议层次和工作方式 1.1 &#xff09;Socket 1.1.1&#xff09;Socket位于传输层&#xff0c;通常使用TCP或UDP协议 1.1.2&#xff09;提供了一个通用的网络编程接口&#xff0c;允许应用程序通过它发送和接收数据 1.1.3&#xff09;一般需要手动管理连接&#xff0c;错…...

学习ASP.NET Core的身份认证(基于JwtBearer的身份认证6)

重新创建WebApi项目&#xff0c;安装Microsoft.AspNetCore.Authentication.JwtBearer包&#xff0c;将之前JwtBearer测试项目中的初始化函数&#xff0c;jwt配置类、token生成类全部挪到项目中。   重新编写login函数&#xff0c;之前测试Cookie和Session认证时用的函数适合m…...

【SpringBoot】SpringBoot中分页插件(PageHelper)的使用

目录 1.分页概念 2.原生写法 3.PageHelper插件分页查询 3.1 介绍 3.2?使用 3.3 Page对象和PageInf对象 1.分页概念 用户查询的数据不可能一次性全部展示给用户&#xff08;如果用户有一万条数据呢&#xff09;&#xff0c;而是分页展示给用户&#xff0c;这就是分页查询…...

【优选算法】4----盛最多水的容器

开始有点上强度了铁子们&#xff0c;这道算法题也是可以说很难理解的~ 想了好久才想明白~ ---------------------------------------begin--------------------------------------- 题目解析&#xff1a; 这一道题刚看题目&#xff0c;根本不知道在讲啥&#xff0c;但看到体积…...

EDI安全:2025年数据保护与隐私威胁应对策略

在数字化转型的浪潮中&#xff0c;电子数据交换&#xff08;EDI&#xff09;已成为企业间信息传递的核心基础设施。然而&#xff0c;随着数据规模的指数级增长和网络威胁的日益复杂化&#xff0c;EDI安全正面临前所未有的挑战。展望2025年&#xff0c;企业如何构建一套全面、高…...

代码随想录刷题day13|(链表篇)24.两两交换链表中的结点

目录 一、链表理论基础 二、思路及易错点 易错点 三、相关算法题目 四、错误代码分析 一、链表理论基础 代码随想录 (programmercarl.com) 二、思路及易错点 该题使用虚拟头结点正常进行模拟即可&#xff0c;有两个关键点&#xff0c;一是循环何时终止&#xff1f;终止…...

集群、分布式及微服务间的区别与联系

目录 单体架构介绍集群和分布式架构集群和分布式集群和分布式区别和联系 微服务架构的引入微服务带来的挑战 总结 单体架构介绍 早期很多创业公司或者传统企业会把业务的所有功能实现都打包在一个项目中&#xff0c;这种方式就称为单体架构 以我们都很熟悉的电商系统为例&…...

MySQL(4)多表查询

引言&#xff1a;为什么需要多表的查询&#xff1f; A&#xff1a;提高效率&#xff0c;多线进行。 高内聚、低耦合。 一、多表查询的条件 1、错误的多表查询&#xff1a; SELECT employee_id,department_name FROM employees,departments; SELECT employee_id,department…...

web前端3--css

注意&#xff08;本文一切代码一律是在vscode中书写&#xff09; 1、书写位置 1、行内样式 //<标签名 style"样式声明"> <p style"color: red;">666</p> 2、内嵌样式 1、style标签 里面写css代码 css与html之间分离 2、css属性:值…...

【Nacos】Nacos快速上手

Nacos快速上手 项目环境介绍一、服务注册/服务发现1.引入Spring Cloud Alibaba依赖2.引入Nacos相关的依赖3.引入Load Balance依赖4.配置Nacos的地址 二、修改远程调用代码三、测试四、启动多个服务&#xff0c;测试负载均衡五、可能出现的问题 项目环境介绍 请你确保你的服务器…...

C++otlv4连接sql serveer使用记录(注意点)

C使用otlv4在做插入时&#xff0c;有一些设计的坑需要注意 插入数据&#xff1a; 当要给表中插入单个字符时&#xff0c;数据库表设计使用varchar(1)是合理的&#xff0c;但是otlv4一直报错char。 后续查很久才知道&#xff0c;otlv4所写的绑定的字符数组的长度应该实际数组…...

在Linux中,如何查询已安装软件包的版本信息?

在Linux中&#xff0c;查询已安装软件包的版本信息可以使用多种方法&#xff0c;具体取决于你使用的Linux发行版及其所采用的包管理器。 RPM-based Linux系统&#xff08;如Red Hat、CentOS、Dedora&#xff09; 使用rpm命令查询所有已经安装的特定软件包及其版本&#xff1a…...

搜广推实习面经四

字节跳动TAC 广告算法 一、回归任务的评价指标有哪些 1.均方误差&#xff08;Mean Squared Error, MSE&#xff09;/均方根误差&#xff08;Root Mean Squared Error, RMSE&#xff09; M S E 1 n ∑ i 1 n ( y i − y ^ i ) 2 MSE \frac{1}{n} \sum_{i1}^{n} (y_i - \ha…...

【Elasticsearch】inference ingest pipeline

Elasticsearch 的 Ingest Pipeline 功能允许你在数据索引之前对其进行预处理。通过使用 Ingest Pipeline&#xff0c;你可以执行各种数据转换和富化操作&#xff0c;包括使用机器学习模型进行推理&#xff08;inference&#xff09;。这在处理词嵌入、情感分析、图像识别等场景…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子&#xff1a; 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...