PHP连接MySQL执行删除操作的完整实例
本内容介绍如何利用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)。具体修改如下:
- 准备语句:使用占位符
?代替具体数值。$stmt = $mysqli->prepare("DELETE FROM symbols WHERE id = ?"); - 绑定参数:将输入值强制绑定为整数类型。
$id = (int)$_GET['id']; // 强制类型转换增加一层保险 $stmt->bind_param("i", $id); - 执行与关闭:
$stmt->execute();
第4步:后续资源清理
操作完成后,需显式关闭 result 对象及 mysqli 连接对象,防止内存泄漏。此外,在实际应用中,建议在执行删除前增加确认提示或二次验证机制,以防误删重要业务数据。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









