美文网首页
node+mysql批量删除遇到的坑

node+mysql批量删除遇到的坑

作者: 昵称被占用厉害了 | 来源:发表于2022-07-07 14:53 被阅读0次

一、单个删除

exports.del = (req, res) => {

var sql =`delete from user where id = ?`

  db.query(sql, [req.query.id], (err, data) => {

if (err) {

return res.send('错误:' + err.message)

}

res.send({

sql:sql,

      status:200,

      message:'删除成功'

    })

})

}

单个删除没问题,?是占位符,在navicat中执行sql语句delete from user where id =1也是正确的

二、批量删除

sql语句delete from user where id in (18,19)在navicat中是没问题的,但是写在node里就会报错,如下:

exports.del = (req, res) => {

var sql =`delete from user where id in (?)})`

  db.query(sql, [req.query.id], (err, data) => {

if (err) {

return res.send('错误:' + err.message)

}

res.send({

sql:sql,

      status:200,

      message:'删除成功'

    })

})

}

这个时候执行单个删除还是没问题的,但是批量的时候就会报错- Truncated incorrect DOUBLE value: '18,19',很奇怪,明明是一样的语句,在node里怎么会报错呢,后来我在navicat反复操作了一波,最终发现问题,上面代码想到与在mysql里执行了delete from user where id in ('18,19')这个语句,这样参数就待了单引号,转成了字符串。正确的写法如下:

exports.del = (req, res) => {

var sql =`delete from user where id in (${req.query.id})`

  db.query(sql, [], (err, data) => {

if (err) {

return res.send('错误:' + err.message)

}

res.send({

sql:sql,

      status:200,

      message:'删除成功'

    })

})

}

相关文章

网友评论

      本文标题:node+mysql批量删除遇到的坑

      本文链接:https://www.haomeiwen.com/subject/bvkpbrtx.html