使用nodejs在Mysql查询中传递数组

使用nodejs在Mysql查询中传递数组,mysql,arrays,node.js,Mysql,Arrays,Node.js,我有一个简单的查询,我想传递一个包含5个项目的数组。我使用的是mysql模块,因此我知道它是可以完成的,但我没有正确地执行synatx,因此出现了语法错误 以下是查询: `UPDATE table1 SET table1.col=0 WHERE (table1.col2) IN = (?) AND table1.id=(SELECT ...);`,[arr] //arr = [1,2,3,4,5]; 我试过: `UPDATE table1 SET table1.col=0 WHERE (ta

我有一个简单的查询,我想传递一个包含5个项目的数组。我使用的是
mysql
模块,因此我知道它是可以完成的,但我没有正确地执行synatx,因此出现了语法错误

以下是查询:

`UPDATE table1 SET table1.col=0 WHERE (table1.col2) IN = (?) AND table1.id=(SELECT ...);`,[arr]

//arr = [1,2,3,4,5];
我试过:

`UPDATE table1 SET table1.col=0 WHERE (table1.col2) IN = (?,?,?,?,?) AND table1.id=(SELECT ...);`,[arr]`
但是我仍然得到一个语法错误。

IN()谓词中的
语法没有使用
=

WHERE (table1.col2) IN = (?,?,?,?,?)
应该是

WHERE table1.col2 IN (?,?,?,?,?)
提示:您可以(也应该)在文档中自己检查语法,这样您就可以比发布到堆栈溢出更容易得到答案


除了Bill Karwin的答案之外,您还可以通过相同的方式将数组传递到MySQL查询中,该查询针对“?”占位符

WHERE table1.col2 IN (?)
//arr = [1,2,3,4,5];
将arr与查询一起传递会将其转换为所需的SQL字符串。mysql模块在内部使用“SqlString”模块中的“SqlString.arrayToList”函数进行转换:

在我的例子中,需要数组内部的数组才能使其正常工作。仅将数组变量作为参数传递给sql

下面是一个示例:(注意数组中的id作为第二个参数)


什么语法错误?请在您的问题中包含错误的全文,或者编辑以添加它。好吧,我是个白痴,我忘记了WHERE子句中的
(我知道它包含在这里),这就是错误,我只是看到了它并认为它是用于数组的,但现在你让我看到了它,我意识到了它,谢谢我会接受答案,因为它确实没有用,我已经在代码中删除了它,但忘在这里了,也谢谢你的提示:)
var sql = "SELECT * FROM table WHERE ID IN (?)";
var ids = [1,2,3];

pool.query(sql, [ids], function (err, result, fields) {

    if(err) {
        console.log(err);
    }
    else {
        console.log(result);
    }
}