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

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

本内容介绍如何利用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 相关产品和应用

全部下载

专题列表