当前位置:首页 > 行业动态 > 正文

html和数据库增删改查

HTML负责页面展示,数据库存储数据,增删改查需通过后端脚本(如PHP/Python)连接 数据库实现,HTML表单提交数据,后端执行SQL语句完成操作并

HTML与数据库交互基础

前端HTML设计

HTML负责展示数据和收集用户输入,常用表单元素与数据库字段对应:

  • 输入框 (<input>) → 文本/数字字段
  • 下拉框 (<select>) → 枚举类型字段
  • 复选框 (<checkbox>) → 布尔类型字段
  • 文本域 (<textarea>) → 长文本字段

后端数据库操作

通过服务器端语言(如PHP/Python/Node.js)连接数据库,典型流程:

  1. 建立连接:使用数据库驱动(如mysqli/pymysql/sqlite3
  2. SQL执行
    • SELECT → 读取数据
    • INSERT → 新增记录
    • UPDATE → 修改记录
    • DELETE → 删除记录
  3. 关闭连接:释放数据库资源

前后端数据交互

通过HTTP请求传递数据,常见方式:
| 技术 | 说明 | 示例 |
|—————-|———————————–|————————–|
| 表单提交 | method="POST"提交键值对 | name=john&age=30 |
| AJAX请求 | 异步发送JSON数据 | fetch('/api', {body: JSON.stringify(data)}) |
| RESTful API | 通过URL路径表达资源 | GET /users/1 |


数据库CRUD操作示例(以MySQL为例)

创建(INSERT)

场景:用户注册时存储信息
HTML

<form method="POST">
  <input name="username" placeholder="用户名">
  <input name="password" type="password" placeholder="密码">
  <button>注册</button>
</form>

PHP处理

$conn = new mysqli('localhost', 'root', '', 'testdb');
$stmt = $conn->prepare("INSERT INTO users (username, password) VALUES (?, ?)");
$stmt->bind_param("ss", $_POST['username'], $_POST['password']);
$stmt->execute();

读取(SELECT)

场景:展示用户列表
SQL

SELECT id, username FROM users WHERE status = 'active';

Python处理

cursor.execute("SELECT id, username FROM users WHERE status = %s", ('active',))
results = cursor.fetchall()  # 返回 [(1, 'Alice'), (2, 'Bob')]

更新(UPDATE)

场景:修改用户资料
HTML

<input name="email" value="old@email.com">
<button>更新邮箱</button>

Node.js处理

const query = "UPDATE users SET email = ? WHERE id = ?";
connection.query(query, [req.body.email, req.body.id], (err, result) => {
  console.log(`更新了 ${result.affectedRows} 条记录`);
});

删除(DELETE)

场景:注销用户账号
SQL

DELETE FROM users WHERE id = 123;

Java处理

String sql = "DELETE FROM users WHERE id = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, userId);
pstmt.executeUpdate();

技术对比表格

特性 PHP+MySQL Python+SQLite Node.js+MongoDB
数据库类型 关系型 关系型 文档型
连接方式 mysqli扩展 sqlite3模块 mongodb驱动
数据结构 严格Schema 动态Schema 无固定Schema
适用场景 中型Web应用 小型项目/本地存储 高并发非结构化数据

相关问题与解答

Q1:如何防止SQL注入攻击?

A

  1. 使用预处理语句(如prepared statements)代替字符串拼接
  2. 对用户输入进行类型校验(如整数转int、字符串转义)
  3. 限制数据库权限(如只开放SELECT/INSERT权限)
    示例(PHP)

    $stmt = $conn->prepare("SELECT  FROM users WHERE id = ?");
    $stmt->bind_param("i", $_GET['id']); // 自动转义特殊字符
    $stmt->execute();

Q2:如何处理多表关联查询?

A

  1. 使用JOIN语句关联表(如INNER JOIN/LEFT JOIN
  2. 在代码中处理关联数据(如嵌套循环或对象映射)
    示例(SQL)

    SELECT orders.id, users.name 
    FROM orders 
    INNER JOIN users ON orders.user_id = users.
0