非常抱歉;我认为这是一个显而易见的问题,但在 5 小时的研究答案中找不到答案。
我的第二个 mysql 查询(使用第一个查询的数据)抛出以下错误。
错误号:1054, sql: '从时间表中选择 ttday、ttfrom、tttill、ttuniqueid,其中 ttname = Always',
当我手动或从没有变量的代码查询 mysql 并且总是在引号“Always”中时,查询计算正确。
我似乎无法弄清楚如何以可计算(可能在引号中)的方式将第一个查询(变量codetimetable.usertimetable)的结果传递给第二个mysql查询。
我的代码:
async function singledbentry(sql) {
const [stripDbInfoLayer] = await pool.query(sql)
return stripDbInfoLayer[0]
}
async function activetime(inputusercode) {
var sql1 = 'SELECT usertimetable FROM users where usercode =' + inputusercode;
let codetimetable = await singledbentry(sql1);
console.log(codetimetable);
console.log(codetimetable.usertimetable);
var sql = 'SELECT ttday, ttfrom, tttill, ttuniqueid FROM timetables where ttname = ' + codetimetable.usertimetable;
timetabledata = await singledbentry(sql);
console.log(timetabledata);
console.log(timetabledata.usertimetable);
}
activetime('4310')
控制台错误:
错误:“where 子句”中的未知列“始终”
at PromisePool.query (C:\Node JS\Projects\user-management\node_modules\mysql2\promise.js:351:22)
at singledbentry (C:\Node JS\Projects\user-management\timeprogram.js:29:43)
at activetime (C:\Node JS\Projects\user-management\timeprogram.js:124:27)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
代码:'ER_BAD_FIELD_ERROR', 错误号:1054, sql: '从时间表中选择 ttday、ttfrom、tttill、ttuniqueid,其中 ttname = Always', sqlState: '42S22', sqlMessage:“‘where 子句’中的未知列‘总是’” }
在 Java 中,您应该将代码更改为以下内容以使其工作,有趣的是它与 Python 中的代码类似 :)
"SELECT usertimetable FROM users where usercode ='" + inputusercode + "';"
但是您可能还想小心代码注入。在此之前回复的帖子中有一些与此相关的详细信息: