删除PHP数据表行后如何返回原页面并保留日期筛选状态
解决删除后保留日期筛选状态的问题
问题根源
删除操作完成后跳转回packages.php时,仅传递了info=delete提示参数,未携带之前的日期筛选条件,导致页面重置为无筛选状态。
解决步骤
- 捕获当前页面的日期筛选参数(假设参数名为
date,请根据实际页面参数名调整) - 在跳转URL中附加该日期参数,确保返回页面能读取并复用筛选条件
- 修复原代码的SQL注入风险(直接拼接用户输入存在安全隐患)
修改后的删除逻辑代码
if(isset($_REQUEST['delete'])){ // 安全获取ID,避免SQL注入 $id = mysqli_real_escape_string($conn, $_REQUEST['id']); // 获取日期筛选参数(如果有) $filterDate = isset($_REQUEST['date']) ? $_REQUEST['date'] : ''; // 使用预处理语句执行删除,彻底避免SQL注入 $sql = "DELETE FROM package_post WHERE id = ?"; $stmt = mysqli_prepare($conn, $sql); mysqli_stmt_bind_param($stmt, "i", $id); if(mysqli_stmt_execute($stmt)){ // 构建跳转URL,携带提示信息和日期筛选参数 $redirectUrl = 'packages.php?info=delete'; if(!empty($filterDate)){ $redirectUrl .= '&date=' . urlencode($filterDate); } header("Location: " . $redirectUrl); exit; // 跳转后终止脚本执行 } else{ echo "ERROR: 执行删除失败 - " . mysqli_error($conn); } mysqli_stmt_close($stmt); mysqli_close($conn); }
补充:packages.php页面需配合处理
在packages.php中,读取date参数并应用到数据查询中,同时在日期筛选控件中回显该参数:
// 获取日期筛选参数 $currentDate = isset($_GET['date']) ? $_GET['date'] : ''; // 查询数据时加入日期条件 $sql = "SELECT * FROM package_post"; if(!empty($currentDate)){ $sql .= " WHERE DATE(your_date_column) = '" . mysqli_real_escape_string($conn, $currentDate) . "'"; } $result = mysqli_query($conn, $sql);
在日期筛选表单中回显参数:
<input type="date" name="date" value="<?php echo htmlspecialchars($currentDate); ?>">
内容的提问来源于stack exchange,提问作者ر ع
相关产品推荐
相关产品推荐

