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

如何通过点击国家菜单实现Datatables带条件数据查询

实现步骤

1. 修改导航链接传递国家参数

给每个国家的导航链接加上GET参数country,点击后将选中的国家传递给后端:

<nav style="margin-bottom:20px">  
     <a href="test.php">Home</a> |
     <a href="test.php?country=Japan">Japan</a> |
     <a href="test.php?country=Australia">Australia</a> |
     <a href="test.php?country=Kore">Kore</a> |
     <a href="test.php?country=Denmark">Denmark</a> |
     <a href="test.php?country=Swedia">Swedia</a> 
</nav>

2. 后端动态生成安全SQL查询

接收前端传递的country参数,拼接查询条件,这里加入白名单校验和预处理语句,避免SQL注入风险:

// 基础SQL语句,默认查询全表
$sql = "SELECT * FROM mydata";
$bindParams = [];
$allowedCountries = ['Japan', 'Australia', 'Kore', 'Denmark', 'Swedia'];

// 校验参数合法性后拼接查询条件
if (isset($_GET['country']) && in_array($_GET['country'], $allowedCountries)) {
    $sql .= " WHERE country = ?";
    $bindParams[] = $_GET['country'];
}

// PDO 执行查询示例
$pdo = new PDO('mysql:host=你的数据库地址;dbname=你的库名;charset=utf8', '账号', '密码');
$stmt = $pdo->prepare($sql);
$stmt->execute($bindParams);
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);

// 若使用MySQLi可参考以下代码
// $conn = new mysqli('数据库地址', '账号', '密码', '库名');
// $stmt = $conn->prepare($sql);
// if (!empty($bindParams)) {
//     $stmt->bind_param('s', ...$bindParams);
// }
// $stmt->execute();
// $result = $stmt->get_result()->fetch_all(MYSQLI_ASSOC);

3. 适配Datatables渲染

如果是前端静态加载Datatables,直接将查询结果转为JSON传入配置即可:

$('#yourTableId').DataTable({
    data: <?php echo json_encode($result); ?>,
    // 保留你原有的columns等配置
    columns: [
        {data: '字段名1'},
        {data: '字段名2'},
        // 其余字段按原有需求配置
    ]
});

如果使用Datatables服务端渲染模式,只需将country参数加入ajax请求的传参列表,SQL逻辑无需修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:57:03