You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PHP的tasks.php中添加URL查询参数实现数据库过滤

整合搜索过滤功能到tasks.php的实现方案

要实现通过URL参数query过滤任务数据的功能,你需要修改原代码的SQL查询逻辑,同时必须使用预处理语句防止SQL注入,以下是修改后的完整代码:

<?php
// 创建数据库连接
$con = mysqli_connect("test", "test", "test", "test");

// 检查连接是否成功
if (mysqli_connect_errno()) {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
    exit; // 连接失败时终止脚本
}

// 获取并清理URL中的query参数
$searchQuery = isset($_GET['query']) ? trim($_GET['query']) : '';

// 基础SQL语句
$sql = "SELECT * FROM `tasks`";

// 如果搜索参数不为空,添加WHERE条件
if (!empty($searchQuery)) {
    $sql .= " WHERE `Task_title` LIKE ? OR `task_description` LIKE ?";
}

// 始终按date_added降序排序
$sql .= " ORDER BY `tasks`.`date_added` DESC";

// 预处理SQL语句(防止SQL注入)
$stmt = mysqli_prepare($con, $sql);

// 如果有搜索参数,绑定通配符匹配的参数
if (!empty($searchQuery)) {
    $likeParam = "%{$searchQuery}%";
    // 绑定两个参数(对应两个LIKE条件)
    mysqli_stmt_bind_param($stmt, "ss", $likeParam, $likeParam);
}

// 执行查询
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);

// 处理查询结果
$resultArray = array();
if ($result) {
    while ($row = $result->fetch_object()) {
        $resultArray[] = $row;
    }
}

// 输出JSON结果
echo json_encode($resultArray, defined('JSON_INVALID_UTF8_IGNORE') ? JSON_INVALID_UTF8_IGNORE : 0);

// 关闭连接和预处理语句
mysqli_stmt_close($stmt);
mysqli_close($con);
?>

关键修改说明:

  • 获取URL参数:通过$_GET['query']获取搜索关键词,用trim()去除首尾空格,处理参数为空的情况。
  • 动态构建SQL:仅当query参数非空时,添加WHERE条件匹配标题或描述字段。
  • 预处理语句:使用mysqli_prepare和mysqli_stmt_bind_param绑定参数,避免直接拼接SQL字符串导致的注入风险,这是必须的安全措施。
  • 通配符匹配:用%包裹搜索关键词,实现模糊匹配(包含关键词的任意位置都能被匹配到)。
  • 清理冗余代码:原代码中$cValue相关的POST参数处理与当前需求无关,已移除。

使用方式:

  • 访问tasks.php:返回所有任务数据
  • 访问tasks.php?query=books:返回标题或描述包含books的任务数据

内容的提问来源于stack exchange,提问作者user19437536

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 19:27:24