【发布时间】:2021-03-21 22:40:19
【问题描述】:
对不起,如果这是一个愚蠢的问题,但我是新来表达和 MySQL,我无法在任何地方找到解决方案。
我需要根据来自 HTML 表单的一些用户输入过滤器创建一个 MySQL 查询。 参数是这样的:
let sDate = req.body.startDate;
let eDate = req.body.endDate;
let param1 = req.body.param1;
let param2 = req.body.param2;
let param3 = req.body.param3;
let param4 = req.body.param4;
如果所有参数都不为空,我将使用的普通查询将是
const query = `
SELECT * FROM table
WHERE
date BETWEEN ? AND ?
AND col1 = ?
AND col2 = ?
AND col3 = ?
AND col4 = ?;`
db.query(query, [startDate, endDate, param1, param2, param3, param4], (e, rows)=>{});
但是每个参数都可以为空,所以有很多可能的过滤器组合。
有没有办法用一个查询来查询数据库?我可以在许多 if-else 语句中处理它,但感觉不对。
提前感谢您的帮助!
【问题讨论】:
-
恕我直言,您没有就您的问题告诉我们足够多的信息,我们无法提供帮助。请edit它,或者问另一个。你的SQL将查询一个表:请给我们看。请解释您的四个
param值如何表达搜索标准。过程 (javascript) 领域和声明性 (SQL) 领域之间的接口需要很高的精度。 -
@O.Jones 对此感到抱歉!我已经编辑了一个查询,我将在提供所有参数的场景中使用该查询。我正在寻找的是是否有一种方法可以创建一个不考虑 WHERE 语句中的空值的查询。
标签: javascript mysql node.js express