如何用where子句使用动态数组查询mysql数据库

时间:2014-04-17 09:17:35

标签: mysql node.js socket.io

我尝试使用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);
    }

2 个答案:

答案 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);
    }
});