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

如何从数据库选取特定行?解决HTML表格点击行仅获最后行问题

我来帮你解决这两个问题哈:

问题1:如何从数据库中选取表格的特定行?

要选取表格里的特定行,核心是用SQL的WHERE子句来设置过滤条件,主流数据库(MySQL、PostgreSQL、SQL Server等)的语法基本一致,给你举几个常用场景的例子:

  • 精确匹配:比如从students表中选取student_id为1001的行
    SELECT * FROM students WHERE student_id = 1001;
    
  • 范围过滤:选取score大于80的学生姓名和分数
    SELECT name, score FROM students WHERE score > 80;
    
  • 模糊匹配:选取姓名中包含“明”的行(用LIKE关键字,%代表任意字符)
    SELECT * FROM students WHERE name LIKE '%明%';
    
  • 多条件组合:选取高三年级且分数大于90的行,用AND/OR连接条件
    SELECT * FROM students WHERE grade = '高三' AND score > 90;
    

如果需要按规则取前N行,还可以结合排序和限制语句,比如MySQL用LIMIT:

-- 选取分数最高的前5名学生
SELECT * FROM students ORDER BY score DESC LIMIT 5;
问题2:点击表格行只能获取最后一行数据的解决方法

你遇到的是典型的闭包作用域陷阱——在循环里绑定点击事件时,变量会被最后一次循环的值覆盖,所以不管点哪一行,拿到的都是最后一条记录的数据。给你两种简单有效的解决思路:

方法1:利用元素的data属性存储数据(推荐)

把每行的registrationID存在按钮的data-*属性里,然后用事件委托绑定点击事件(只绑定一次,性能更好):

<% while (records.next()){ 
    String regisID = records.getString("registrationID"); 
    String courseName = records.getString("courseName");
    // 假设status是你已定义的变量
%>
<tr>
  <td><%= courseName %></td>
  <td>
    <button class="evaluate-btn" 
            data-regis-id="<%= regisID %>" 
            <%= status == 0 ? "" : "style='display:none'" %>>
      Evaluate
    </button>
  </td>
</tr>
<% } %>

<!-- 把事件绑定放在循环外部,绑定到表格父元素 -->
<script>
$('#table-content').on('click', '.evaluate-btn', function(){
    // 从当前点击的按钮上获取存储的registrationID
    const currentRegisID = $(this).data('regis-id');
    console.log('当前点击行的ID:', currentRegisID);
    // 这里写你的业务逻辑
});
</script>

方法2:用闭包保存循环变量

如果不想改HTML结构,可以用立即执行函数(IIFE)把每次循环的变量包裹起来,形成独立作用域:

<% while (records.next()){ 
    String regisID = records.getString("registrationID"); 
    String courseName = records.getString("courseName");
%>
<tr>
  <td><%= courseName %></td>
  <td>
    <button class="evaluate-btn" 
            <%= status == 0 ? "" : "style='display:none'" %>>
      Evaluate
    </button>
  </td>
</tr>
<script>
// 用立即执行函数保存当前循环的regisID
(function(id){
    // 绑定到刚添加的最后一个按钮
    $('.evaluate-btn').last().click(function(){
        console.log('当前点击行的ID:', id);
    });
})('<%= regisID %>');
</script>
<% } %>

第一种方法更简洁易维护,也避免了循环绑定多个事件的性能问题,优先推荐哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 07:05:17