使用引号将变量中的数据库查询值传递给 mysql 查询

问题描述 投票:0回答:1

非常抱歉;我认为这是一个显而易见的问题,但在 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 子句’中的未知列‘总是’” }

mysql node.js asynchronous
1个回答
0
投票

在 Java 中,您应该将代码更改为以下内容以使其工作,有趣的是它与 Python 中的代码类似 :)

"SELECT usertimetable FROM users where usercode ='" + inputusercode + "';"

但是您可能还想小心代码注入。在此之前回复的帖子中有一些与此相关的详细信息:

如何将 NodeJS 变量输入到 SQL 查询中

© www.soinside.com 2019 - 2024. All rights reserved.