Javascript 试图使返回mysql“SELECT*FROM”结果的函数返回未定义的结果

Javascript 试图使返回mysql“SELECT*FROM”结果的函数返回未定义的结果,javascript,mysql,node.js,discord.js,Javascript,Mysql,Node.js,Discord.js,我试图创建一个从SQL“SELECT*from”返回统计数据数组的函数,当我不使用函数返回它时,它可以工作,但我不能在“functionerr,results”之外使用该数组 con.query(`SELECT * FROM MemberPeniz WHERE memberId = '${memberID}'`, function(err, results) { if(err) { throw err; }

我试图创建一个从SQL“SELECT*from”返回统计数据数组的函数,当我不使用函数返回它时,它可以工作,但我不能在“functionerr,results”之外使用该数组

con.query(`SELECT * FROM MemberPeniz WHERE memberId = '${memberID}'`, function(err, results) {
            if(err) {
                throw err;
            }
            console.log(results)
        })
我试过这个:

function checkTimeoutMEMBERid(memberID) {
        con.query(`SELECT * FROM MemberPeniz WHERE memberId = '${memberID}'`, function(err, results) {
            if(err) {
                throw err;
            }
            return results
        })

    }
    const result = checkTimeoutMEMBERid(message.author.id);
    console.log(result)

但正如我所说,无论我传入什么id,它都返回undefined,这是因为,您将结果返回到回调函数,而回调函数不会返回到调用函数。您可以将函数更新为

function checkTimeoutMEMBERid(memberId) {
return new Promise((resolve, reject) =>{
    con.query(`SELECT * FROM MemberPeniz WHERE memberId = ?`,[memberId], (err, results) => {
        if(err) {
            return reject(err)
        }
        resolve(results)
    })
  })
}
checkTimeoutMEMBERid(message.author.id)
.then(result =>
{
console.log(result)
})

警告:通过将参数连接到SQL查询中,您很可能对以下内容非常开放。如果我们将WHERE子句作为测试,并执行类似于SELECT*FROM MEMBENPINIZ ORDER By memberid LIMIT 2的操作,会发生什么情况?@spencer7593它仍然返回未定义的