IN子句在mysql nodejs中

我有一个简单的nodejs应用程序执行以下查询。

select * from User where userid in (?) 

我得到的userid是从客户端发送的JSON数组。 我如何使用这个select查询? 我试了1.本身,但没有工作。 2.将其转换为Javascript数组,不起作用

你可以这样做:select * from User where userid in(?,?,?,?)

 var array = []; array.push(value); array.push(value); array.push(value); array.push(value); 

然后使用数组作为应该绑定的参数。

  1. 将JSON数组展开为所需格式的string。 使用“+”连接查询。 (小心SQL注入)
  2. dynamic添加“?” 使用持有用户ID的JSON数组的长度。 然后使用该数组来提供用户ID。

这是我尝试的两种方法。 两者都有效。 然后我用一个更好的方法改变了我的逻辑,所以现在我不再需要'in'子句了。

重新审视这个问题,因为问题的原始方法是有效的,但有一些注意事项。 如果你唯一的转义参数是IN子句中的参数,那么你必须指定它作为嵌套数组; 如:[['usrId1','usrId2','usrIdN']]。 这是因为un-escapingfunction需要一个数组,取代每个'?' 与相应的数组元素。 所以,如果你想replace你唯一的'?' 用一个数组,该数组应该是所有传递参数的第一个元素。 如果你有多个“?”,语法更直观,但最后是一致的; 在这种情况下,您可以将您的参数类似于:['myOtherArgument1','myOtherArgument2',['usrId1','usrId2','usrIdN'],'myOtherArgument3']