Node.js用于检索的mysql查询语法

时间:2015-07-29 06:42:35

标签: javascript mysql node.js express

我使用带有MySQL nom的nodejs来检索日期。 当前select * from table工作正常,但如果我想查询数据库并检索2个值之间的日期,则无效。

节点代码是

app.get('/api',function(req,res)
{


  var startDate = req.param('startDate');
  var endDate = req.param('endDate');
  var sqlQuery =null;
  var message ={};
  message.status=false;

  log("Params Found Changing SQL Queries For Start And End Date");
    sqlQuery ="SELECT * from sentiment_data where *file_ts* >= "+startDate+" and *file_ts* <= "+endDate+" order by file_ts";
    log(sqlQuery);
    if(user.isDB)
    {  
      connection.query(sqlQuery, function(err, rows, fields)
      {
        if (!err)
        {
          message = rows;
          res.send(message);
        }
      });
    }
    else
    {
      log("DB Error");
    }

});

我在使用开始时间和结束时间构建它时执行的SQL语句是

SELECT * from sentiment_data 
 where *file_ts* >= "+startDate+" 
  and *file_ts* <= "+endDate+" 
 order by file_ts

我正在构建此查询,但它无法正常工作。

1 个答案:

答案 0 :(得分:2)

*file_ts*无效SQL;也不可能只将一个不带引号的日期存入查询。使用参数绑定;它还可以保护您免受Bobby Tables

var sqlQuery = "SELECT * FROM sentiment_data WHERE file_ts >= ? AND file_ts <= ? ORDER BY file_ts";
// ...
connection.query(sqlQuery, [startDate, endDate], function(err, results) {
  // ...
});

根据startDateendDate中的内容,您可能需要使用Date.parse来使其易于理解。