Javascript 尝试从表中动态读取时发生SQL错误

Javascript 尝试从表中动态读取时发生SQL错误,javascript,mysql,sql,node.js,Javascript,Mysql,Sql,Node.js,以下代码导致了一些问题。我正在尝试创建一个函数,该函数将创建一个令牌,并检查特定表中是否有匹配的令牌。我在查询运行时收到此错误消息 Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''comps' WHERE 'compUUI

以下代码导致了一些问题。我正在尝试创建一个函数,该函数将创建一个令牌,并检查特定表中是否有匹配的令牌。我在查询运行时收到此错误消息

Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your 
MariaDB 
server version for the right syntax to use near ''comps' WHERE 'compUUID' = 'gDnn58MU5vAP1GxhP0LgOGToJQUrXmQhtZqbQvwDpqmqGbIY9B4F' at line 1
这是密码

function genToken(table, col, length) {
let finalGen;
generator()
function generator() {
    var result = '';
    var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
    var charactersLength = characters.length;
    for ( var i = 0; i < length; i++ ) {
        result += characters.charAt(Math.floor(Math.random() * charactersLength));
        if (i + 1 === length) {
            db.query("SELECT ? FROM ? WHERE ? = ?", [col, table, col, result], (err, results) => {
                if (err) {
                    console.log(err)
                } else {
                    if (results.length > 0) {
                        generator()
                    } else {
                        finalGen = result
                    }
                }
            })
        }
    }
    
}
return finalGen
}
函数genToken(表、列、长度){
让最后一个;
发电机()
函数生成器(){
var结果=“”;
变量字符='ABCDEFGHIJKLMNOPQRSTUVXYZABCDFGHIJKLMNOPQRSTUVXYZ0123456789';
var charactersLength=characters.length;
对于(变量i=0;i{
如果(错误){
console.log(错误)
}否则{
如果(results.length>0){
发电机()
}否则{
最终结果=结果
}
}
})
}
}
}
返回终结者
}

“您不能将标识符(列名和表名)作为SQL参数传入。您必须使用查询字符串将它们放入”


感谢Gordon Linoff

您不能将标识符(列和表名)作为SQL参数传入。我将这个问题与一个老问题联系起来,我用一个如何使用mysqljs库传递标识符的示例回答了这个问题。他们使用了一个技巧——它不是传统意义上的查询参数,他们只是将标识符名称复制到查询中,但他们可以安全地执行此操作。