将Javascript数组转换为MySQL数组

4

我想要将一个Javascript数组转换成MySQL能够成功解析的数组。

我的MySQL查询包含了这个数组:

Do something WHERE id IN ("472", "467"). 

这个查询在MySQL Workbench中可以正常工作。

我正在努力将数组调整为所需的结构。我尝试了以下JavaScript结构来处理我的API,但是无法使其运作。

("378", "464")
[ 378, 464 ]
('472', '467')

MYSQL 错误信息:

  code: 'ER_PARSE_ERROR',
  errno: 1064,

1
你把查询提交到哪里? - Nina Scholz
1
你还应该考虑使用预处理语句 - 这里有一种处理可变长度 IN 子句的方法:https://dev59.com/NnRC5IYBdhLWcg3wVvnL - cmbuckley
4个回答

6
你可以将字符串化的值连接起来,并用逗号分隔所有的值。

var ids = [378, 464],
    formatted = `(${ids.map(v => JSON.stringify(v.toString())).join(', ')})`;

console.log(formatted);


这导致我得到了以下查询:'(\"378\", \"464\")',最终在mysql中引发解析错误。 - anderwald
正如我之前所问的,这应该在哪里提交?请附上所需格式以及为什么字符串需要转义反斜杠。 - Nina Scholz
我正在通过以下方式插入:db.query(('DO something WHERE id IN ?'), [formatted])你的修复方法如下:db.query(('DO something WHERE id IN ' + formatted)谢谢! - anderwald
你在上面的评论区看过链接的问题了吗? - Nina Scholz

4

你可以使用 Array#join('", "') 将数组转换为所需的字符串格式。

var list = ["123", "354"];

if (!list.length) {
  console.log("Empty");
} else {
  var query = `select * from table where id in ("${list.join('", "')}")`;
  console.log(query);
}


2

0

Try it: Use join in array ("${arrItems.join('","')}")

var arrItems = [1,2,3,4,5,6,7,8,9];
var strSql = `SELECT * FROM Example WHERE ID IN ("${arrItems.join('","')}")`;
console.log(strSql);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接