PHP连接MySQL执行删除操作的完整实例

唐可
唐可
发布时间:2026-10-14| 6人浏览过
原创

本内容介绍如何利用PHP语言的mysqli扩展实现MySQL数据库的数据删除功能。通过对从用户输入到SQL执行全过程的分析,展示基础操作逻辑及防御SQL注入的安全改进方案,帮助开发者掌握规范的数据库交互模式。

核心操作目标与前置准备

实现数据库删除操作的核心目标是向服务器发送指令,永久移除 symbols 表中特定 ID 的记录。在开始编写代码前,需确保本地或开发环境已正确配置 PHP 运行环境及 MySQL 数据库服务,并具备合法的数据库账户权限。

基础删除流程分析

传统的数据库操作通常遵循“连接→构建语句→执行→释放”的顺序。以下基于原始草稿逻辑梳理的操作步骤:

第1步:建立数据库连接

目的:获取与数据库通信的通道。使用 new mysqli() 实例化对象,传入主机名、用户名、密码及库名。

  • 重要参数:$host, $user, $pass, $db.
  • 完成状态:成功返回 mysqli 对象,或通过 mysqli_connect_errno() 捕获失败信息。

第2步:处理输入与构建SQL

目的:接收外部请求(通常为 $_GET['id'])并转化为 SQL 删除语句。

// 检查输入是否存在
if(isset($_GET['id'])) {
    // 【危险操作】直接拼接字符串,极易遭受SQL注入攻击
    $query = "DELETE FROM symbols WHERE id = " . $_GET['id'];
}

风险提示:上述原始代码将用户输入直接拼入查询,攻击者可通过输入 1 OR 1=1 等方式篡改逻辑或删除全部数据。

第3步:执行与验证

目的:调用数据库接口并确认操作结果。

  • 动作:调用 $mysqli->query($query)。
  • 判断标准:若返回 false,输出 $mysqli->error;若成功,可通过 affected_rows 确认删除行数。

安全修正与最佳实践

为保证生产环境的数据安全,必须摒弃字符串拼接方式,改用预处理语句(Prepared Statements)。具体修改如下:

  1. 准备语句:使用占位符 ? 代替具体数值。
    $stmt = $mysqli->prepare("DELETE FROM symbols WHERE id = ?");
  2. 绑定参数:将输入值强制绑定为整数类型。
    $id = (int)$_GET['id']; // 强制类型转换增加一层保险
    $stmt->bind_param("i", $id);
  3. 执行与关闭:
    $stmt->execute();

第4步:后续资源清理

操作完成后,需显式关闭 result 对象及 mysqli 连接对象,防止内存泄漏。此外,在实际应用中,建议在执行删除前增加确认提示或二次验证机制,以防误删重要业务数据。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。