试图制作返回 mysql 'SELECT * FROM' 结果的函数,最终返回 undefined
Posted
技术标签:
【中文标题】试图制作返回 mysql \'SELECT * FROM\' 结果的函数,最终返回 undefined【英文标题】:Trying to make function that returns mysql 'SELECT * FROM' results, ended up returning undefined试图制作返回 mysql 'SELECT * FROM' 结果的函数,最终返回 undefined 【发布时间】:2020-08-30 04:54:06 【问题描述】:我正在尝试创建一个从 SQL 'SELECT * FROM' 返回统计数据数组的函数,当我不使用函数返回它时,它可以工作,但我不能在外部使用该数组'函数(错误,结果)'
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
【问题讨论】:
警告通过将参数连接到您的 SQL 查询中,您可能会对SQL injection 敞开心扉。 当我们将 WHERE 子句作为测试时会发生什么,我们执行SELECT * FROM MemberPeniz ORDER BY memberid LIMIT 2
之类的操作?
@spencer7593 它仍然返回 undefined
【参考方案1】:
这是因为,您将结果返回给回调函数,而回调函数不会返回调用者函数。您可以将函数更新为,
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)
)
【讨论】:
以上是关于试图制作返回 mysql 'SELECT * FROM' 结果的函数,最终返回 undefined的主要内容,如果未能解决你的问题,请参考以下文章