但是我想在MySQL查询中传递一个javascript变量,但是当我在console.log中运行查询时,却出现了两个“ \”,因此代码无法正常工作。
App.js代码
app.get('/home', function(req, res){
db.connect(function(err){
var sale = req.query.cbosale;
db.query("SELECT Year, Season FROM tsales WHERE Sale LIKE '"+sale+"'", function(err, result, fields){
res.render('home', {title:"home",data:result});
})
})
})
在console.log中,查询显示为:-
SELECT Year, Season FROM tsales WHERE Sale LIKE \'13\'
“ \”符号阻止执行查询。你能帮帮我吗,我是新来的。
答案 0 :(得分:0)
尝试以此替换/
,
var formatSaleValue = sale.replace(/\\/g,''));
您也可以将格式值用作
db.query("SELECT Year, Season FROM tsales WHERE Sale LIKE '"+formatSaleValue+"'", function(err, result, fields){ ....
希望这会有所帮助!
答案 1 :(得分:0)
您需要类似
connection.query('SELECT Year, Season FROM tsales WHERE Sale ?', '%' + value + '%', ...)
它确实避开了单引号,即问题所在,您也可以尝试类似的方法
LIKE " + connection.escape('%'+you var+'%')
答案 2 :(得分:0)
将JavaScript变量包装在'"+ variable +"'
中
例如,要根据列ID从表中选择一行,您必须将JavaScript变量包装在'"+ variable +"'
中
例如:我们想从表格中获取用户信息(用户名,性别,电子邮件...)所有他的信息,我们有他的ID,所以我们这样做:
var userid = 8;
"SELECT * FROM table WHERE id = '"+ userid +"' "
答案 3 :(得分:0)
我通常这样做,希望对您有所帮助!
app.get('/home', function(req, res){
db.connect(function(err){
const sale = req.query.cbosale;
const dbquery = "SELECT Year, Season FROM tsales WHERE Sale LIKE ?"
db.query(dbquery, sale, function(err, result, fields){
res.render('home', {title:"home",data:result});
})
})
})