ER_PARSE_ERROR на узле mysql при вставке нескольких значений
Я пытаюсь вставить несколько значений в базу данных, используя узел-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, кажется, работают, поэтому я в настоящее время подключен к базе данных. Если понадобится больше информации, я с удовольствием их предоставлю. Я просто не знаю больше надеть здесь.
1 ответ
Решение
Я закончил тем, что просто использовал 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)