查询工作在phpmyadmin,但不是在表达



我有一个MySQL查询的问题,我正在做一个控制器,我需要一个过滤器在前面(React)。控制器是用路由内的参数制作的,但是当我尝试用Postman测试它时不工作,但是如果我对phpmyadmin进行相同的查询,则工作完美。

控制器:

let { tabla, nameUno, fechaIni, fechaFin, nameDos, nameTres, nameCuatro } =
req.params;
conn.query(
// SELECT * FROM tyt_finan WHERE tf_fecha_r BETWEEN '2022-05-31' AND '2022-06-01' AND tf_city IN ('Bogota') AND tf_estado = 'Pendiente' AND tf_campana = 'IN'
"SELECT * FROM " +
tabla +
" WHERE " +
nameUno +
" BETWEEN " +
fechaIni +
" AND " +
fechaFin +
" AND " +
nameDos +
" IN ('') AND " +
nameTres +
" = ? AND " +
nameCuatro +
" = ?",
[req.params.value1, req.params.value2, req.params.value3],

路线

routes.get(
"/searchAll/:tabla/:nameUno/:fechaIni/:fechaFin/:nameDos/:value1/:nameTres/:value2/:nameCuatro/:value3",
defaultController.searchAll
);

这是我在Postman上发送的GET请求:

http://localhost:9000/searchAll/tyt_finan/tf_fecha_r/'2022-05-31'/'2022-06-01'/tf_city/'Bogota','Barranquilla'/tf_estado/'Pendiente'/tf_campana/'IN'

为变量使用参数。使用模板文字也比使用连接更容易用表和列名的变量构造SQL字符串。

参数数组中的值也比SQL中的?的值多。我已经用= ?代替了IN (''),在那里使用value1

let {tabla, nameUno, fechaIni, fechaFin, nameDos, value1, nameTres, value2, nameCuatro, value3} = req.params;
conn.query(
`SELECT * 
FROM ${tabla} 
WHERE ${nameUno} BETWEEN ? AND ? 
AND ${nameDos} = ?
AND ${nameTres} = ? 
AND ${nameCuatro} = ?`, [fetchaIni, fechaFin, value1, value2, value3], (err, res) => {
if (!err) {
console.log(res);
}
});

最新更新