我有一个使用复选框的应用程序,以便在给定时间更新多个记录。我可以通过选中一个复选框来更新数据库。但是,在选中多个复选框时更新时遇到问题。
我能够使用正则表达式ids.trim().replace(/,{1,}$/, '');
删除结尾的逗号。本质上是错误。
router.js
const express = require('express')
const router = express.Router()
var { conn } = require('./config')
router.post('/update', async (req, res) => {
try{
const pool = await conn
var ids = req.body.ids; // 1,
ids = ids.trim().replace(/,{1,}$/, '');
console.log(ids); // 1
var dev_est = req.body.dev_est; // 20,
dev_est = dev_est.trim().replace(/,{1,}$/, '');
console.log(dev_est); // 20
const update = await pool.request()
.input('ids', ids)
.input('dev_est', dev_est)
.query("UPDATE Table SET Dev_Est = @dev_est
WHERE Unique_ID = @ids");
}catch(err) {
res.status(500)
res.send(err.message)
}
selected.ejs
$(document).ready(function(){
window.ids = "";
window.dev_est = "";
$('#btnSubmit').bind('click', function(e){
e.preventDefault();
createUpdatedArrays(); // This function gets the ids and the dev_est
$.ajax({
type: "POST",
url: /update,
data: {
ids: window.ids,
dev_est: window.dev_est
}
success: function(data) {
if (data.success) {
$('.msg').html('Updated');
}
else {
alert("error");
}
}
});
ids = "";
dev_est = "";
带有一个复选框的实际结果
ID | 1
Dev_Est | 10
带有多个选中复选框的实际结果
ID | 1,2,3,4
Dev_Est | 10,5,9,17
错误
我们都可以猜测,Conversion failed when converting the nvarchar value '1,2,3,4' to data type int.
我的问题是,如何在一次提交时更新多个记录。任何帮助,将不胜感激。谢谢!