如何使用PHP+MySQL删除数据记录?附代码片段
PHP+MySQL 删除数据记录:从你的代码到完整实现
嘿,我看了你这段删除数据的代码,先给你拆解下它的逻辑,再补上你缺失的前端触发部分,顺便把关键的安全问题给你搞定——毕竟直接拼用户输入到SQL里是真的容易踩大坑!
先分析你现有代码的作用与问题
你的这段代码核心是做这几件事:
- 引入数据库连接文件
db.php - 从请求中获取
id参数($_REQUEST会同时接收GET/POST两种请求的参数) - 拼接DELETE语句,删除
new_record表中对应id的记录 - 执行SQL,出错就输出错误信息
- 删除完成后跳转到
view.php页面
但这里有个致命的安全漏洞:直接把用户传入的id拼进SQL语句,会引发SQL注入攻击。比如有人恶意传入id=1 OR 1=1,你的整张表数据都会被清空,这绝对是要避免的!
安全优化后的PHP代码(使用预处理语句)
我们改用mysqli的预处理语句来执行删除,彻底防范SQL注入,同时优化错误处理和跳转逻辑:
<?php require('db.php'); // 先校验ID参数的合法性,避免非法请求 if (!isset($_REQUEST['id']) || !is_numeric($_REQUEST['id'])) { die('无效的ID参数,请返回重试'); } // 强制转为整数,进一步避免非法值 $id = (int)$_REQUEST['id']; // 使用预处理语句,?是参数占位符 $query = "DELETE FROM new_record WHERE id = ?"; $stmt = mysqli_prepare($con, $query); // 绑定参数:"i"表示参数是整数类型,对应后面的$id mysqli_stmt_bind_param($stmt, "i", $id); // 执行删除操作 $execute_result = mysqli_stmt_execute($stmt); if ($execute_result) { // 删除成功,跳转到列表页并带上提示参数 header("Location: view.php?msg=删除记录成功"); exit; // 跳转后必须exit,防止后续代码继续执行 } else { // 输出更精准的错误信息 die('删除失败:' . mysqli_stmt_error($stmt)); } // 关闭语句与连接(脚本结束会自动关闭,但养成好习惯) mysqli_stmt_close($stmt); mysqli_close($con); ?>
这里的优化点:
- 先校验ID的合法性,确保是有效数字
- 预处理语句+参数绑定,从根源上避免SQL注入
- 跳转时加上成功提示,方便前端展示反馈
- 用
mysqli_stmt_error()获取更精准的预处理语句错误信息
补上你缺失的前端触发部分
要触发删除操作,你需要在列表页(比如view.php)给每条记录加上删除按钮/链接,这里给你两种常用方式:
方式1:GET请求链接(简单直观)
在每条记录的操作栏添加删除链接,加上确认提示避免误触:
<a href="delete.php?id=<?php echo $row['id']; ?>" onclick="return confirm('确定要删除这条记录吗?');">删除</a>
这里delete.php就是你存放上面那段PHP代码的文件,点击链接会弹出确认框,确认后就会发送GET请求执行删除。
方式2:POST请求表单(更安全,推荐)
用表单提交POST请求,避免爬虫或误触触发删除:
<form action="delete.php" method="post" style="display: inline-block;"> <input type="hidden" name="id" value="<?php echo $row['id']; ?>"> <button type="submit" onclick="return confirm('确定要删除这条记录吗?');">删除</button> </form>
如果用这种方式,PHP代码里可以把$_REQUEST['id']改成$_POST['id'],更严谨地对应请求类型。
额外注意事项
- 确保
db.php里的数据库连接使用mysqli扩展,且连接参数(主机、用户名、密码、库名)正确 - 数据库操作的用户需要拥有
DELETE权限,否则会执行失败 - 如果跳转时出现
headers already sent错误,检查header()之前有没有输出任何内容(包括空格、HTML标签)
内容的提问来源于stack exchange,提问作者Jim Adjei-Wiredu
相关产品推荐
相关产品推荐

