我有一个简单的查询,我想传递一个包含 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]`
但我仍然遇到语法错误。
最佳答案
除了 Bill Karwin 的回答之外,您还可以将一个数组传递给针对“?”的 MySQL 查询。占位符以同样的方式
WHERE table1.col2 IN (?)
//arr = [1,2,3,4,5];
将 arr 与查询一起传递会将其转换为所需的 SQL 字符串。 mysql 模块在内部使用“sqlstring”模块中的“SqlString.arrayToList”函数进行转换: https://github.com/mysqljs/sqlstring/blob/8f193cae10a2208010102fd50f0b61e869e14dcb/lib/SqlString.js#L60
关于mysql - 使用nodejs在Mysql查询中传递数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46535318/