PHP MySQL 删除记录

2025年5月14日 | 阅读 5 分钟

要在 PHP 中删除 MySQL 数据库中的记录,SQL 提供了 DELETE SQL 语句。自 PHP 5.5 及其后续版本以来,旧的 mysql_query() 函数已被弃用。现代 PHP 代码应采用以下替代方案之一:

  • 使用 MySQLi 扩展的 mysqli_query() (过程式或面向对象)
  • 使用 PHP 数据对象扩展的 PDO::exec()

SQL DELETE 语句的语法

注意:如果省略 WHERE 子句,将删除表中的所有记录。

PHP MySQLi 删除记录示例

示例

删除前

idnamedepartment
1AliceHR
2BobIT
3查理销售

输出

Connected successfully
Record deleted successfully

删除后

idnamedepartment
1AliceHR
3查理销售

说明

此过程式示例连接到 MySQL 数据库,使用固定 ID 构建 DELETE 查询,使用 mysqli_query() 运行它,然后关闭连接。

PHP MySQLi DELETE(面向对象)

示例

删除前

IDusername角色
200迈克编辑器
201Lisa管理者
202John管理员

输出

Record was deleted successfully.

删除后

IDusername角色
200迈克编辑器
202John管理员

说明

此示例展示了面向对象的 MySQLi 用法。它从数据表中删除 ID 为 201 的记录。如果查询成功,将显示成功消息。

PHP PDO DELETE 语句

示例

删除前

IDusername角色
200迈克编辑器
201Lisa管理者
202John管理员

输出

Record was deleted successfully.

删除后

IDusername角色
200迈克编辑器
202John管理员

说明

此 PDO 示例连接到数据库,运行 DELETE 查询,并优雅地处理异常。由于此 DELETE 操作不返回结果,因此使用 exec() 方法。

使用 MySQLi 预处理语句进行 PHP DELETE

示例

删除前

idname位置
1Jane管理者
2SteveAnalyst
3Karen开发者

输出

Record deleted successfully using prepared statement

删除后

idname位置
1Jane管理者
3Karen开发者

说明

此示例使用预处理语句安全地删除记录。将“?”占位符转换为变量,使查询免受 SQL 注入攻击。

使用 PDO 预处理语句进行 PHP DELETE

示例

删除前

idname角色
1RachelQA 测试员
2BrianDevOps
3Nina设计者

输出

Record deleted successfully using PDO prepared statement

删除后

idname角色
1RachelQA 测试员
3Nina设计者

说明

此 PDO 类型使用命名参数:id 来安全地删除记录。bindParam() 方法在执行前绑定实际值,并提供强大的保护和更好的代码可读性。

现实世界中的例子

示例 1:从 MyGuests 表中删除

假设有一个名为“MyGuests”的表,如下所示:

idfirstname姓氏email
1JohnDoejohn@tpointtech.com
2MaryMoemary@tpointtech.com
3JulieDooleyjulie@tpointtech.com

要删除 id = 3 的记录,您可以点击这里

删除后,表格变为

idfirstname姓氏email
1JohnDoejohn@tpointtech.com
2MaryMoemary@tpointtech.com

说明

这是一个简单的删除示例,根据唯一 ID 删除给定记录。通过使用 WHERE 子句,只会删除预期的记录。

示例 2:根据条件删除多个记录

考虑一个名为“persons”的表,其中包含以下数据:

idfirst_namelast_nameemail
1彼得帕克peter@tpointtech.com
2JohnRambojohnrambo@tpointtech.com
3ClarkKentclarkkent@tpointtech.com
4JohnCarterjohncarter@tpointtech.com
5HarryPotterharrypotter@tpointtech.com

要删除所有名字为“John”的记录,请使用以下 SQL 命令:

删除后,表格将如下所示:

idfirst_namelast_nameemail
1彼得帕克peter@tpointtech.com
3ClarkKentclarkkent@tpointtech.com
5HarryPotterharrypotter@tpointtech.com

说明

此示例演示如何通过 WHERE 子句中的条件删除多个记录。所有 first_name = 'John' 的条目都将被删除。此方法对于批量清理(包含共享属性的手机号码,从而易于删除测试帐户或过时的用户记录)非常方便。

结论

使用 DELETE SQL 命令在 PHP 中从 MySQL 数据库中删除记录很容易,但必须谨慎管理。现代 PHP 鼓励使用 MySQLi 或 PDO,它们支持预处理语句,这是一种防止 SQL 注入攻击的防御机制。切勿忘记包含 WHERE 子句,以避免意外删除整个表。

如果您的项目采用过程式或面向对象架构,您可以使用过程式或面向对象风格;如果您想要数据库可移植性,您可以使用 PDO。强烈建议在用户输入驱动的操作中使用预处理语句,以确保数据完整性和应用程序的完全安全性。


下一主题PHP MySQL SELECT