插入多个值时,节点mysql上的'ER_PARSE_ERROR'
我试图在节点中使用node-mysql将多个值放入数据库。 我的源代码
engine.files.forEach(function(file) { torrentpath = file.path.replace(/&/g, "&").replace(/>/g, ">").replace(/</g, "<").replace(/"/g, """).replace(/'/g, "'").replace(/\\/g, "/"); torrentFiles.push([ result.insertId, torrentpath, file.length ]); }); console.log(torrentFiles); app.mysql.query('INSERT INTO `files` (`torrentid`, `filename`, `filesize`) VALUES ?', torrentFiles, function(err, result) { if (err) throw err; });
我得到的错误是
[ [ 11, 'ubuntu-14.04-desktop-amd64.iso', 1010827264 ] ] Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '11, 'ubuntu-14.04-desktop-amd64.iso', 1010827264' at line 1 at Query.Sequence._packetToError (C:\wamp\www\sleepytorrentdownload\src\node_modules\mysql\lib\protocol\sequences\Sequence.js:30:14)
目前我所有的其他SQL查询似乎工作,所以我目前连接到数据库。 如果需要更多的信息,我会很乐意给他们。 我只是不知道要在这里穿上。
我结束了在查询内使用mysql.escape(val)
app.mysql.query('INSERT INTO `files` (`torrentid`, `filename`, `filesize`) VALUES '+app.mysql.escape(torrentFiles), function(err, result)
编辑
修复这个是添加torrentFiles
在[]
。 就是现在
app.mysql.query('INSERT INTO `files` (`torrentid`, `filename`, `filesize`) VALUES ? ', [torrentFiles], function(err, result)