2016-08-01 83 views
1

我在Node应用程序中使用mysqljs\mysql,我遇到了一些使用'in'子句执行语句的问题。使用Mysqljs mysql执行'where in'语句

在paramater逸出,文档指出:

阵列都变成列表中,例如[ '一', 'B']变成 'A', 'B'

Escaping query values

但是当我尝试这样的事:

var sql = "SELECT * FROM table WHERE name IN (?)"; 
var params = ['a', 'b', 'c']; 
console.log(mysql.format(sql, params)); 

我只得到包含查询该阵列的第一个值:

"SELECT * FROM table WHERE name IN ('a')" 
+0

如果文档不正确(从未使用过),另一种方法是加入数组'params.join(',')'。但是这应该只在mysqljs不可能的情况下才能完成 – AxelH

回答

2

尝试这种情况:

var params = [['a', 'b', 'c']]; 
+0

太棒了!谢谢Ebrahim。我会在几分钟内允许的。 – Stromgren

+1

@Stromgren,阅读SqlString代码,我发现该函数等待一个数组将每个单元格放在每个?,该文档说,如果**这个数组的单元格**是一个数组,它将被转换为你想要的。这就是为什么这个回应起作用。仅供参考;) – AxelH

+0

谢谢@AxelH .. – Stromgren

0

如果没有其他的工作,你也可以尝试在编写语句时单独写出列表项(这应该是自动的)。因此,准备好的语句如下所示:

"SELECT * FROM table WHERE name IN (?, ?, ?)"