【问题标题】:Assign variables to query mysql on NodeJS分配变量以在 NodeJS 上查询 mysql
【发布时间】:2017-09-28 21:51:40
【问题描述】:

嗨,我在 nodejs 上获取 mysql 数据时遇到了一些问题

我的问题是'如何将 var n 添加到 "%drawing eye%" 以获取数据库中的数据?'

  function showResult(req, res){
                var n = req.query.query
                mysql_conn.query('SELECT query_text FROM catalogsearch_query WHERE query_text LIKE "%drawing eye%" ORDER BY popularity DESC LIMIT 0 , 10', function(error, rows){
                res.render('result.html',{result:n , related: rows.map(row => row.query_text)})
                })
        }

【问题讨论】:

标签: javascript mysql angularjs node.js express


【解决方案1】:

mysql 模块支持queries with placeholders,其中这些占位符被您传递的变量替换(正确转义,以防止 SQL 注入):

function showResult(req, res) {
  var n = req.query.query;
  mysql_conn.query(`
    SELECT   query_text
    FROM     catalogsearch_query
    WHERE    query_text LIKE ?
    ORDER BY popularity DESC
    LIMIT    0, 10`,
    '%' + n + '%',
    function(error, rows) {
      if (err) return res.sendStatus(500);
      res.render('result.html',{result:n , related: rows.map(row => row.query_text)})
    }
  )
}

LIKE 之后的? 是占位符,它将被'%' + n + '%' 的转义版本替换。

【讨论】:

    【解决方案2】:

    做这样的事情LIKE "%' + n + '%" ORDER BY

    function showResult(req, res) {
        var n = req.query.query
        mysql_conn.query('SELECT query_text FROM catalogsearch_query WHERE query_text LIKE "%' + n + '%" ORDER BY popularity DESC LIMIT 0 , 10', function(error, rows) {
            res.render('result.html', {
                result: n,
                related: rows.map(row => row.query_text)
            })
        })
    }
    

    【讨论】:

    • n 需要转义。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-14
    • 1970-01-01
    相关资源
    最近更新 更多