一、单个删除
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:'删除成功'
})
})
}
网友评论