【问题标题】:node.js mysql query cannot run due to quotes around digit由于数字周围的引号,node.js mysql 查询无法运行
【发布时间】:2016-02-25 08:07:10
【问题描述】:

我有这个用 node.js mysql 编写的 mysql 查询,并在 HTTP GET 中执行。 https://github.com/felixge/node-mysql

var api_get_func = function (app, url_path) {
    function respond(req, res, next) {
        var id= req.query.id;
        var limit = req.query.limit;   

    var query_str =
        "SELECT table.sw_type, " +
        "FROM users " +
        "WHERE (id = ?) " + 
        "LIMIT ?"; //limit

    var var_arr = [id, limit];  

    var query = connection.query(query_str, var_arr, function (err, rows, fields) {}
        //SQL query ...
        return next();
    }

app.get(url_path, respond);
}

HTTP GET URL 是http://127.0.0.1/read_sw?id=51&limit=1

报告的错误是查询格式不正确。实际查询如下所示;

SELECT table.sw_type, 
            FROM users 
            WHERE (id = 51) 
            LIMIT '1'

我认为问题出在LIMIT '1'。我认为解决方案是让查询看起来像这样;

SELECT table.sw_type, 
            FROM users 
            WHERE (id = 51) 
            LIMIT 1

如何修改node.js代码?

【问题讨论】:

  • 您有 2 个错误:LIMIT 需要获取数字而不是字符串。 var limit = Number(req.query.limit) 也是如此,并删除 table.sw_type 之后的逗号
  • 只需验证并将 id 和限制变量更改为数字而不是字符串

标签: javascript mysql node.js node-mysql


【解决方案1】:

这与 mysql 无关……

req.query 中的任何内容都是字符串:

怎么样

var var_arr = [id, parseInt(limit)];

【讨论】:

    【解决方案2】:

    你也可以使用

    var limit = Number(req.query.limit);  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-25
      • 2017-11-19
      • 2018-07-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多