如何将JavaScript二维数组插入MySQL表?代码报错求解决方案
解决JavaScript二维数组批量插入MySQL的语法错误
你的问题出在db.query的参数传递上:当使用MySQL批量插入的VALUES ?占位符时,驱动要求第二个参数是包裹着二维数组的外层数组,你直接传入二维数组myArr,导致SQL解析时缺少外层括号,触发语法错误。
修正后的代码
var myArr = [ [ 10000, '2021-03-08', 10000, '2021-03-07', 0, 364 ], [ 10000, '2021-04-08', 10000,'2021-03-08', 0, 333 ], [ 10000, '2021-05-08', 5000, '2021-03-08', 2500, 303 ] ] const sql = 'INSERT INTO vm001 (Amount, date, entryamt, entrydate, balanceamt, daysdel) VALUES ?' // 核心修改:把二维数组放到外层数组里 db.query(sql, [myArr], function (err, result) { if (err) { console.error('插入失败:', err) return } console.log(`成功插入 ${result.affectedRows} 条数据`) })
补充说明
- 这种写法会让MySQL驱动自动处理每条数据的括号包裹和逗号分隔,既避免了手动拼接SQL的语法问题,也能防止SQL注入风险
- 如果你用的是
mysql2驱动,还可以用Promise风格简化代码:
// mysql2 Promise 版本示例 async function insertData() { try { const [result] = await db.query(sql, [myArr]) console.log(`成功插入 ${result.affectedRows} 条数据`) } catch (err) { console.error('插入失败:', err) } } insertData()
内容的提问来源于stack exchange,提问作者doc pinocchio
相关产品推荐
相关产品推荐

