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

如何通过下拉列表选择全部获取数据库所有设备数据

实现选择“Select All”展示所有设备数据的解决方案

你的代码已经实现了单个设备的查询功能,只需修改后端PHP逻辑即可支持“Select All”选项,同时为了避免SQL注入风险,建议使用预处理语句优化代码。以下是具体修改步骤:

1. 修改后端处理文件 showDevice.php

核心逻辑是判断传入的参数是否为all,如果是则查询所有设备数据,否则按指定设备名称查询:

<?php
$k = $_POST['id'] ?? '';
$k = trim($k);

$con = mysqli_connect("localhost", "test", "test", "woehler");
// 检查数据库连接状态
if (!$con) {
    die("连接失败: " . mysqli_connect_error());
}

// 根据参数生成对应SQL语句
if ($k === 'all') {
    $sql = "SELECT art_nr, product_name, directive, products.note, standards.standard_name 
            FROM woehler.products 
            LEFT JOIN standards ON products.standard_id=standards.id";
    $stmt = mysqli_prepare($con, $sql);
    mysqli_stmt_execute($stmt);
} else {
    // 使用预处理语句避免SQL注入
    $sql = "SELECT art_nr, product_name, directive, products.note, standards.standard_name 
            FROM woehler.products 
            LEFT JOIN standards ON products.standard_id=standards.id 
            WHERE product_name=?";
    $stmt = mysqli_prepare($con, $sql);
    mysqli_stmt_bind_param($stmt, "s", $k);
    mysqli_stmt_execute($stmt);
}

$result = mysqli_stmt_get_result($stmt);

while($rows = mysqli_fetch_array($result)){
?>
    <tr>
        <td><?php echo $rows['art_nr'];  ?> </td>
        <td><?php echo $rows['directive'];  ?> </td>
        <td><?php echo $rows['note'];  ?> </td>
        <td><?php echo $rows['standard_name'];  ?> </td>
    </tr>
<?php
}
// 释放数据库资源
mysqli_stmt_close($stmt);
mysqli_close($con);
?>

改动说明:

  • 增加数据库连接错误检查,避免连接失败时无反馈
  • 新增参数判断逻辑:当传入值为all时,执行不带WHERE条件的查询,返回所有设备数据
  • 替换直接字符串拼接SQL的写法,使用mysqli预处理语句彻底规避SQL注入风险
  • 规范数据库资源释放操作,避免资源泄漏

2. 前端代码无需修改

你的HTML已经添加了<option value="all">Select All...</option>选项,JavaScript也能正确将选中值传递给后端,因此前端部分保持原样即可。

测试时选择“Select All...”选项,页面会通过AJAX请求获取所有设备的指令和标准数据并展示在表格中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 21:39:17