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库传递标识符的示例回答了这个问题。他们使用了一个技巧——它不是传统意义上的查询参数,他们只是将标识符名称复制到查询中,但他们可以安全地执行此操作。