Node.js 为什么这些值没有插入到mysql2查询中?

Node.js 为什么这些值没有插入到mysql2查询中?,node.js,Node.js,你能告诉我吗? 为什么mysql2值替换在IN操作符中不起作用 我这么做了,但什么都没用。 只有数组的第一个字符被数字6替换 "select * from products_categories WHERE category_id IN (?)", [6,3]); 当然,你可以这样做: 在里面[6,3,1,1,1,1,1,1,1,1,1,1] 但这是不对的,我认为应该从数组中自动替换IN=我没有使用这个,但我的直觉告诉我数组项根据索引映射到问号,所以在你的例子中,6绑定到第一个?3寻找另一个,

你能告诉我吗? 为什么mysql2值替换在IN操作符中不起作用

我这么做了,但什么都没用。 只有数组的第一个字符被数字6替换

"select * from products_categories WHERE category_id IN (?)", [6,3]);
当然,你可以这样做: 在里面[6,3,1,1,1,1,1,1,1,1,1,1]


但这是不对的,我认为应该从数组中自动替换IN=

我没有使用这个,但我的直觉告诉我数组项根据索引映射到问号,所以在你的例子中,6绑定到第一个?3寻找另一个,但没有找到

如果我是你,我会尽量确保我的第一个数组项实际上是数组,所以我会重写它:

从产品类别中选择*,其中类别id位于,[[6,3]];
我怀疑您正在将其与.execute一起使用,它是prepared语句prepare first if event execute before+execute的缩写。虽然api与.query非常相似,但一个最大的区别是,在预处理语句的情况下,在执行时只发送参数,而不像.query,在客户端上,整个查询文本都使用所有参数进行插值。因此,您需要准确地发送参数的数量,因为在您的示例-1?中,原始查询文本中有占位符的数量?。整个[6,3,1,1,1,1,1,1,1,1,1,1]被视为一个参数,并作为6,3,1,1,1,1,1,1,1字符串发送到服务器,因为在准备步骤中,服务器可能会将该参数报告为VAR_CHAR


解决方案是1个使用。在客户端上查询和插值,或2个动态构建足够的,并为不同数量的IN参数准备不同的PS

您使用什么节点包?