PHP 如何删除数据
在日常网站开发中,我们经常会遇到需要删除数据的场景——比如用户注销账号、删除过期的商品评论、清理后台冗余的日志信息。对很多新手来说,PHP作为常用的网站开发语言,要实现“删除数据”的功能,其实并不复杂,只要搞清楚核心逻辑,就能轻松上手。
先搞懂:PHP删数据的核心逻辑是什么?
很多人以为PHP是直接“删掉”数据库里的内容,其实不对——PHP本身是“调度者”,真正执行删除动作的是数据库。简单说,PHP的作用只是告诉数据库“我要删掉某条数据”,然后把数据库返回的结果告诉用户。

举个生活化的例子:你要清理家里的旧衣服(数据),你不是自己直接把旧衣服扔了(数据库执行删除),而是对着家人说“把衣柜最上层那件穿破的羽绒服扔了”(PHP发送删除指令),家人听完后执行扔衣服的动作(数据库处理),最后告诉你“已经扔了”或“找不到那件衣服”(PHP返回结果)。
所以,PHP删数据的步骤就很清晰了:第一步,连接数据库;第二步,写“删除指令”告诉数据库要删哪条;第三步,执行指令并反馈结果。
最基础的删除写法:用mysqli扩展实现
对新手来说,mysqli是PHP里最容易上手的数据库扩展,不需要复杂配置就能用。假设我们有个存储用户评论的表叫comments,里面有一条ID为5的评论,我们要删掉它,代码可以这么写:
`php
// 1. 连接数据库(这里替换成你自己的数据库信息)
$conn = mysqli_connect("localhost", "你的数据库账号", "你的密码", "你的数据库名");
// 检查连接是否成功
if (!$conn) {
die("连接失败:" . mysqli_connect_error());
}
// 2. 写删除指令:删掉comments表里id=5的记录
$sql = "DELETE FROM comments WHERE id=5";
// 3. 执行指令并判断结果
if (mysqli_query($conn, $sql)) {
echo "删除成功!";
} else {
echo "删除失败:" . mysqli_error($conn);
}
// 关闭连接
mysqli_close($conn);
`
这里要注意一个关键的细节:WHERE id=5是用来定位要删的数据的——如果忘了写这行,直接写DELETE FROM comments,结果就是把整个评论表清空,就像你说“把衣柜里所有衣服都扔了”,这肯定不是我们想要的。
更安全的写法:用预处理语句防注入
刚才的代码有个小风险:如果用户输入的删除ID是恶意数据,比如有人把ID改成5 OR 1=1,指令就会变成DELETE FROM comments WHERE id=5 OR 1=1,直接删掉所有评论。这就是常见的“SQL注入漏洞”。
怎么避免?用“预处理语句”就行,它就像你对着家人说“把衣柜里【这个纸条写的那件】旧衣服扔了”——纸条上的内容是用户输入的,不会被当成指令的一部分,能彻底规避注入风险。修改后的代码是这样的:
`php
$conn = mysqli_connect("localhost", "你的数据库账号", "你的密码", "你的数据库名");
if (!$conn) { die("连接失败:" . mysqli_connect_error()); }
// 1. 准备带占位符的指令(?就是占位符,代替要删的id)
$sql = "DELETE FROM comments WHERE id=?";
$stmt = mysqli_prepare($conn, $sql);
// 2. 把用户输入的id和占位符绑定(这里的i表示绑定的是数字类型)
mysqli_stmt_bind_param($stmt, "i", $user_input_id);
// 3. 执行并判断结果
$user_input_id = 5; // 这里的5可以换成用户提交的id,比如从表单获取的
if (mysqli_stmt_execute($stmt)) {
echo "删除成功!";
} else {
echo "删除失败:" . mysqli_stmt_error($stmt);
}
// 关闭资源
mysqli_stmt_close($stmt);
mysqli_close($conn);
`
这种写法不仅安全,还能多次重复执行同一条指令,效率更高,是现在PHP删除数据的标准推荐写法。
特殊场景的小技巧
如果要删除的数据是和其他表关联的,比如用户注销时,需要同时删掉用户表、用户评论表、用户订单表里的相关数据,就可以用数据库的“外键关联”或者写多条删除指令,让一次性删除更省心。另外,删除前最好加个“确认提示”,比如在网站上做个弹窗让用户点“确定再删除”,避免误操作删错重要数据——就像扔旧衣服前,先让你确认“真的要扔这件吗?”,能减少很多不必要的麻烦。