INSERT INTO失败,使用node-mysql

我正在尝试用node.js插入一些数据。 我已经写了下面的代码,并通过npm安装了MySQL支持,但是我没有把表INSERT INTO到表中。

这是我的代码:

 var mysql = require('mysql'); function BD() { var connection = mysql.createConnection({ user: 'root', password: '', host: 'localhost', port: 3306, database: 'nodejs' }); return connection; } app.post("/user/create", function(req, res) { var objBD = BD(); var post = { username: req.body.username, password: req.body.password }; objBD.query('INSERT INTO users VALUES ?', post, function(error) { if (error) { console.log(error.message); } else { console.log('success'); } }); }); 

HTML代码:

 <form action="/user/create" method="POST" class="form-horizontal"> <input type="text" id="username_input" name="username"> <input type="text" id="password_input" name="password"> <input type="submit" name="Submit" value="Insert" class="btn"> </form> 

错误消息是:

你的SQL语法有错误, 检查与您的MySQL服务器版本相对应的手册,以便在第一行使用正确的语法。'username'='Test','password'='test'at line 1

我的错误是什么?

注意node-mysql的文档 :

如果你注意了,你可能已经注意到这个转义允许你做这样的整洁的事情:

 var post = {id: 1, title: 'Hello MySQL'}; var query = connection.query('INSERT INTO posts SET ?', post, function(err, result) { // Neat! }); console.log(query.sql); // INSERT INTO posts SET `id` = 1, `title` = 'Hello MySQL' 

注意他们使用SET而不是VALUESINSERT INTO ... SET x = y是一个有效的MySQL查询,而INSERT INTO ... VALUES x = y不是。

我知道这是一个旧的职位,但认为我会分享INSERT INTO … VALUES是一个有效的命令(没有SET),对于批量更新非常有用:

 db.query('INSERT INTO myTable (field1, field2, field3) VALUES ?', [values]) 

其中[values]是数组的数组,每个数组包含这三个字段,并作为表中的logging插入。

对于其他人的search,我也遇到了同样的问题,但事实certificate这是一个更复杂,不相关的问题。 我没有宣布'use strict'; 在文件的最顶端。

我知道这本身并不能解决数据库插入问题,但它指出了我的整个脚本的部分编码不正确,一旦修复它们,它就像预期的那样工作。