node.js中mysql查询中的Javascript变量

时间:2018-07-19 12:10:53

标签: mysql node.js express pug

但是我想在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\'

“ \”符号阻止执行查询。你能帮帮我吗,我是新来的。

4 个答案:

答案 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});
        })
    })
})