php实现全选删除
PHP实现全选删除功能
要实现全选删除功能,通常需要结合前端HTML、JavaScript和后端PHP代码。以下是具体实现方法:
前端部分(HTML和JavaScript)
<!-- 全选复选框 -->
<input type="checkbox" id="selectAll" onclick="selectAll(this)">全选
<!-- 项目列表 -->
<form method="post" action="delete.php">
<input type="checkbox" name="items[]" value="1">项目1<br>
<input type="checkbox" name="items[]" value="2">项目2<br>
<input type="checkbox" name="items[]" value="3">项目3<br>
<button type="submit">删除选中</button>
</form>
<script>
function selectAll(source) {
var checkboxes = document.getElementsByName('items[]');
for(var i=0; i<checkboxes.length; i++) {
checkboxes[i].checked = source.checked;
}
}
</script>
后端处理(delete.php)
<?php
if(isset($_POST['items']) && is_array($_POST['items'])) {
// 连接数据库
$db = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
// 准备SQL语句
$placeholders = implode(',', array_fill(0, count($_POST['items']), '?'));
$stmt = $db->prepare("DELETE FROM items WHERE id IN ($placeholders)");
// 执行删除
$stmt->execute($_POST['items']);
// 返回结果
echo "成功删除".$stmt->rowCount()."条记录";
}
?>
数据库安全注意事项
使用预处理语句防止SQL注入攻击非常重要。上面的代码中使用了PDO预处理语句,确保传入的ID值会被安全处理。
// 错误的做法(容易导致SQL注入)
// $ids = implode(",", $_POST['items']);
// $db->query("DELETE FROM items WHERE id IN ($ids)");
// 正确的做法(使用预处理语句)
$placeholders = implode(',', array_fill(0, count($_POST['items']), '?'));
$stmt = $db->prepare("DELETE FROM items WHERE id IN ($placeholders)");
$stmt->execute($_POST['items']);
前端优化建议
可以添加确认对话框,防止误删:
document.querySelector('form').addEventListener('submit', function(e) {
if(!confirm('确定要删除选中的项目吗?')) {
e.preventDefault();
}
});
批量删除性能考虑
当需要删除大量数据时,可以考虑分批处理:
$chunks = array_chunk($_POST['items'], 100); // 每次处理100条
foreach($chunks as $chunk) {
$placeholders = implode(',', array_fill(0, count($chunk), '?'));
$stmt = $db->prepare("DELETE FROM items WHERE id IN ($placeholders)");
$stmt->execute($chunk);
}






