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

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

时间:2024-07-27 09:28:02浏览次数:8  
标签:Web 数据库 表单 HTML SQL 查询 CSS

目录

一、概述

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应用。

 

标签:Web,数据库,表单,HTML,SQL,查询,CSS
From: https://blog.csdn.net/qq_33502371/article/details/140715643

相关文章

  • 【HTML+CSS】CSS中的对齐艺术
    目录1.水平居中文本水平居中行内元素或行内块元素水平居中块级元素水平居中2.垂直居中单行文本垂直居中弹性盒布局(Flexbox)绝对定位与负边距3.同时水平垂直居中弹性盒布局(Flexbox)绝对定位与transform4.左对齐2.右对齐        在网页设计中,元素的居......
  • Python request-html 未下载 Chromium
    importrequestsfrombs4importBeautifulSoupfromrequests_htmlimportHTMLSessionurl="https://dmarket.com/ingame-items/item-list/csgo-skins?title=recoil%20case"sesion=HTMLSession()response=sesion.get(url)response.html.render()soup=B......
  • 什么是HTML?
    HTML是超文本标记语言(英语HyperTextMarkupLanguage,简称:HTML)是一种用于创建网页的标准标记语言。我们可以使用HTML来建立自己的WEB站点,HTML运行在浏览器上,由浏览器来解析。HTML包括一系列标签,可以将网络上的文字格式统一,使分散的Internet资源,连接为一个逻辑整体。HTML......
  • HTML里面table标签详细用法
    HTML中的<table>标签用于创建表格,其中包含了行(<tr>)和列(<td>或<th>)的组合。以下是`<table>`标签的详细用法:1.基本结构一个基本的HTML表格由<table>标签开始和结束。每个表格由一个或多个<tr>(tablerow,表格行)组成,而每个行又包含多个<td>(tabledata,表格数据)或<th>(tableheader,......
  • SQL数据库表 多对多关系设计--省去链表的尝试
     概述 之前遇到一个MES需求,需要创建一个基础资料表"人员信息表",用于其它业务的人员信息关连,因为这些人员并非系统登录帐号,所以单独进行维护。人员表涉及到字段包括:ID,工号,姓名,所属工序,所属职称,所属车间。其中,所属工序、所属职称、所属车间为多选。例:一位人员,比如"班长......
  • redis的使用场景-热点数据缓存(把经常访问的数据放入缓存减少数据库压力)
    一、使用redis实现(不推荐,会增加业务代码维护)@ServicepublicclassClazzServiceImplimplementsClazzService{@AutowiredprivateClazzDaoclazzDao; //注入mapper@AutowiredprivateRedisTemplate<String,Object>redisTemplate; //调用redis使用@Overridep......
  • java多线程把数据迁移到不同数据库中
    publicvoidsync_table_test_thread()throwsSQLException,InterruptedException{    longstart=System.currentTimeMillis();    SimpleDateFormatformat=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");    //获取要迁移oracle表数据库......
  • 02HTML+CSS
    今天下午学习了列表,表格和表单。列表:列表分为无序列表,有序列表,定义列表。无序列表没有加样式,界面显示出来前面都是一个点,有序列表显示是带有数字1,2,3的列表,而定义列表,可以给出列表的标题和内容。一般来说,我们用到无序列表多,也是重点。无序列表格式:父标签<ul><li></li></ul>,里面......
  • python和mysql数据库
    pyhton和mysql数据库1.非查询:frompymysqlimportConnection#导入数据库模块pymysql以及Connection对象conn=Connection(#连接数据库  host='127.0.0.1',#ip地址或者是主机名  port=3306,#端口号  user='root',  password='20040130', ) cursor=c......
  • MySQL索引、事务(数据库管理与高可用)
    一、索引的概念索引:排序的列表,对数据进行快速的查询;针对不同的产品需求,或者不同的数据库结构,会创建不同的索引;1:普通索引(默认索引)2:唯一索引(可以多个)3:主键索引(只能一个)4:组合索引(最左查询)5:全文索引oracle:B树索引将表一份为二进行查询;701--3536--701--1718--35先把......