【发布时间】:2019-09-30 15:34:56
【问题描述】:
我正在尝试通过 EJS / Express 调用查询。这直接在 MySQL 中工作,但不能通过 Express / EJS。
我在 MySQL 中有一个工作查询,当我尝试通过 Express 运行时无法识别。
'SET @cumulative:=0; \
select * from ( \
select str_to_date(dateAndTime,\'%Y-%m-%d %T\') AS
dateAndTime,description,chargeId,amount,(@cumulative := @cumulative +
amount) AS cumulative \
from charges \
WHERE chargeStatus = "succeeded" AND
DATE_ADD(str_to_date(dateAndTime,\'%Y-%m-%d\'), INTERVAL 0 HOUR) =
CURDATE() \
order by str_to_date(dateAndTime,\'%Y-%m-%d %T\') \
) AS T1 order by cumulative desc'
为什么这个查询可以在 MySQL 中直接工作,例如 Workbench,但在通过 Express / Node 调用时却不行?
下面是我的节点模块。
此外,删除行 'SET @cumulative:=0; \ 会导致成功(缺少结果字段,累积。)
var db = require('../db/db');
var queryString = 'select * from ( \
select str_to_date(dateAndTime,"%Y-%m-%d %T") AS dateAndTime,description,chargeId,amount,(@cumulative := @cumulative + amount) AS cumulative \
from charges \
WHERE chargeStatus = "succeeded" AND DATE_ADD(str_to_date(dateAndTime,"%Y-%m-%d"), INTERVAL 0 HOUR) = CURDATE() \
order by str_to_date(dateAndTime,"%Y-%m-%d %T") \
) AS T1 order by cumulative desc';
module.exports = {
home: function(req, res){
db.query(queryString,function(err,result){
if(err){
console.log(err)
}
if(result===undefined){
res.send('No results')
}
else{
res.render('home',{result:result});
}
});
},
};
【问题讨论】:
-
您需要向我们展示您是如何执行此操作的。现在这是一个令人困惑的转义 SQL 字符串。提示:如果在查询中使用单引号,请使用双引号来定义它。
-
@tadman 谢谢,已更新。