一颠放、單個刪除
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中執(zhí)行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:'刪除成功'
? ? })
})
}
這個時候執(zhí)行單個刪除還是沒問題的阵苇,但是批量的時候就會報錯- Truncated incorrect DOUBLE value: '18,19'壁公,很奇怪,明明是一樣的語句绅项,在node里怎么會報錯呢,后來我在navicat反復操作了一波比肄,最終發(fā)現(xiàn)問題快耿,上面代碼想到與在mysql里執(zhí)行了delete from user where id in ('18,19')這個語句囊陡,這樣參數(shù)就待了單引號,轉(zhuǎn)成了字符串掀亥。正確的寫法如下:
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:'刪除成功'
? ? })
})
}