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

如何在Express.js中实现MySQL数据库选中行的删除功能?

解决数据库删除选中行的问题

嘿,我来帮你捋捋为啥沿用添加数据的路子删不了行——毕竟新增是往数据库塞数据,删除是要精准定位并移除指定内容,逻辑流程差不少,直接照搬肯定容易踩坑。我结合你给出的前端代码片段,一步步给你拆解实现思路:

第一步:先让前端能精准拿到要删的行ID

你的表格里有ID列,首先得让用户能选中目标行,比如给每行加个复选框,把选中的ID收集起来:

<div class="container">
  <div class="row">
    <div class="col-md-6 mt-4 text-center">
      <table class="table table-striped">
        <tr>
          <th>选择</th>
          <th>ID</th>
          <th>TITLE</th>
          <th>NEWS</th>
        </tr>
        <!-- 假设你是循环渲染数据行,这里用Vue语法举例,原生JS/其他框架逻辑类似 -->
        <tr v-for="item in newsList" :key="item.id">
          <td><input type="checkbox" :value="item.id" v-model="selectedIds"></td>
          <td>{{ item.id }}</td>
          <td>{{ item.title }}</td>
          <td>{{ item.news }}</td>
        </tr>
      </table>
      <button class="btn btn-danger" onclick="deleteSelected()">删除选中行</button>
    </div>
  </div>
</div>

核心是把用户选中的行ID存到数组里,比如上面的selectedIds,这样后端才能知道要删哪些数据。

第二步:后端接口要适配批量删除逻辑

添加数据一般传单个对象,但删除得接收ID数组,SQL里要用IN关键字来匹配多个ID,举个Java+MyBatis的例子:

// 后端Mapper层示例
@Delete("DELETE FROM news_table WHERE id IN (#{ids})")
int deleteSelectedRows(@Param("ids") List<Integer> ids);

要是用原生SQL,记得用预编译语句,别直接拼字符串,防止SQL注入。

第三步:前端发起删除请求的关键细节

别直接抄添加时的请求格式,得把收集到的ID数组传对:

// 原生JS请求示例
async function deleteSelected() {
  // 收集选中的ID
  const checkboxes = document.querySelectorAll('input[type="checkbox"]:checked');
  const selectedIds = Array.from(checkboxes).map(box => box.value);
  
  if (selectedIds.length === 0) {
    alert("先选要删的行呀!");
    return;
  }

  try {
    const res = await fetch('/api/news/delete', {
      method: 'POST', // 也可以用DELETE,看后端接口配置
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({ ids: selectedIds })
    });

    if (res.ok) {
      // 删除成功后记得刷新表格数据
      loadNewsData();
      alert("删完啦!");
    } else {
      alert("删失败了,再试试?");
    }
  } catch (err) {
    console.log("请求出错:", err);
  }
}

容易踩的坑你自查下

  • 请求方式不匹配:有些后端删除接口要求用DELETE方法,别一股脑用POST;
  • 参数格式错了:后端要数组,你传了单个ID或者字符串,SQL肯定执行不了;
  • 没刷新前端数据:删完后端数据,前端表格没重新拉取,看起来就像没删成功;
  • 权限/事务问题:检查下数据库用户有没有删除权限,或者是不是事务没提交导致数据没变化。

你对照这些步骤看看,大概率是某一步没做对,比如没正确收集选中ID,或者后端没处理数组参数~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:26:38