INSERT INTO因node-mysql而失败

时间:2014-02-14 12:32:02

标签: mysql node.js sql-insert 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 code:

<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服务器版本对应的手册,以便在第1行使用正确的语法.'username'='测试','密码'='测试'在第1行

我的错误是什么?

3 个答案:

答案 0 :(得分:53)

注意documentation of 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则不是。

答案 1 :(得分:12)

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

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

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

答案 2 :(得分:0)

对于其他搜索,我有同样的问题,但事实证明这是一个更复杂,无关的问题。我没有在文档的最顶部声明​​'use strict';

我知道这本身并不能解决数据库插入问题,但是它指出了我的整个脚本中编码错误的部分,并且一旦修复它们,就会按预期工作。

相关问题