web-dev-qa-db-ja.com

複数の値を挿入するときのノードmysqlの「ER_PARSE_ERROR」

Node-mysql in nodeを使用して、データベースに複数の値を入力しようとしています。私のソースコード

engine.files.forEach(function(file) {
  torrentpath = file.path.replace(/&/g, "&amp;").replace(/>/g, "&gt;").replace(/</g, "&lt;").replace(/"/g, "&quot;").replace(/'/g, "&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:\wamp\www\sleepytorrentdownload\src\node_modules\mysql\lib\protocol\sequences\Sequence.js:30:14)

現在、他のすべてのSQLクエリが機能しているように見えるので、現在データベースに接続しています。さらに情報が必要な場合は、喜んで提供します。私はここに置くべきことをもっと知りません。

10
buhbang

クエリ内でmysql.escape(val)を使用することになりました

 app.mysql.query('INSERT INTO `files` (`torrentid`, `filename`, `filesize`) VALUES '+app.mysql.escape(torrentFiles), function(err, result) 

[〜#〜]編集[〜#〜]

これに対する修正は、put torrentFiles[]に追加することでした。今です

app.mysql.query('INSERT INTO `files` (`torrentid`, `filename`, `filesize`) VALUES ? ', [torrentFiles], function(err, result)
12
buhbang