#mysql #sql #node.js #node-mysql
#mysql #sql #node.js #узел-mysql
Вопрос:
Я пытаюсь ввести несколько значений в базу данных, используя node-mysql в node. мой исходный код
engine.files.forEach(function(file) {
torrentpath = file.path.replace(/amp;/g, "amp;amp;").replace(/>/g, "amp;>").replace(/</g, "amp;<").replace(/"/g, "amp;quot;").replace(/'/g, "amp;apos;").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:wampwwwsleepytorrentdownloadsrcnode_modulesmysqllibprotocolsequencesSequence.js:30:14)
В настоящее время все мои другие sql-запросы, похоже, работают, поэтому я в настоящее время подключен к базе данных.
Если потребуется дополнительная информация, я с радостью ее предоставлю. Я просто не знаю, что еще добавить сюда.
Комментарии:
1. 3 поля, всего 2 значения….
2. @RobertRozas На самом деле нет, он просто показывает, где находится синтаксическая ошибка. Попробуйте вызвать
app.mysql.escape()
каждое из ваших значений, поскольку оно неправильно экранировано, как вы можете видеть на'16,
.3. @BenFortune, который
'16,
заканчивается, если ошибка была достаточно короткой, но я все равно добавил escape, но отображается та же ошибка. Я думаю, что одинарная кавычка присутствует при печати ошибки
Ответ №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)