【问题标题】:INSERT INTO fails with node-mysqlINSERT INTO 因 node-mysql 而失败
【发布时间】:2014-03-13 19:46:41
【问题描述】:

我正在尝试使用 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 服务器版本相对应的手册,以在第 1 行的 .'username' = 'Test' , 'password' = 'test' 附近使用正确的语法

我的错误是什么?

【问题讨论】:

    标签: mysql node.js sql-insert node-mysql


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

        关注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 不是。

        【讨论】:

        • 非常感谢。我花了一个小时来解决这个问题。
        • @TimWolla 这是一个很棒的解决方案,但是我怎样才能在一个对象中调用 MySQL 函数呢?
        猜你喜欢
        • 2016-01-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-26
        • 2019-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多