2 回答
TA贡献1719条经验 获得超6个赞
使用 时sql-template-strings,插入到查询中的值将作为参数传递给查询,而不是直接插入到查询中。但是查询中的表名必须静态声明,它们不能作为参数传递。这就是您的查询失败的原因。要使其工作,请将表名直接插入查询字符串中,而不是使用 SQL 模板字符串插值。
var queryString = 'SELECT * FROM ' + table;
connection.query(queryString, (err, result) => {
if(err) throw err;
return cb(result);
})
这样做的一个重要后果是,如果您不确定变量实际保存的内容,将内容直接附加到 SQL 查询中是非常危险的,因此请始终确保它table实际上是一个有效的表名,如果变量包含用户,则永远不要这样做输入。
TA贡献1810条经验 获得超4个赞
有一种方法可以通过使用模板字符串库来做到这一点append():
let queryString = SQL`SELECT * FROM `;
queryString.append(table); //put variable names into append
connection.query(queryString, (err, result) => {
if(err) throw err;
return cb(result);
})
添加回答
举报
