我尝试使用where子句查询mysql数据库,如下所示。
这里的popularTopicsNames是一个动态数组,其长度和元素各不相同。
var scoreQuery=connection.query('SELECT * FROM LEADERBOARD WHERE SUBTOPIC IN ('+popularTopicsNames+')', function(err,result,fields){
if(err) throw err;
else{
console.log(result);
}
答案 0 :(得分:2)
如果它只是一个数组,那么您就是在尝试将其作为字符串传递,但这不会起作用。
尝试
var scoreQuery = connection.query("SELECT * FROM LEADERBOARD WHERE SUBTOPIC IN ('" + popularTopicsNames.map(mysql.escape).join("','") + "')",
function(err, result, fields) {
if (err) {
throw err;
} else {
console.log(result);
}
});
答案 1 :(得分:0)
这将以更易读的方式解决问题。
var scoreQuery = connection.query(`SELECT * FROM LEADERBOARD WHERE SUBTOPIC IN (?)`, [popularTopicsNames],
(err, result, _fields) => {
if (err) {
throw err;
} else {
console.log(result);
}
});