2014-02-14 143 views
17

我試圖插入一些數據與node.js.我已經寫了下面的代碼並通過npm安裝了MySQL支持,但是我沒有登錄INSERT INTO表。INSERT INTO與node-mysql失敗

這裏是我的代碼:

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語法錯誤; 'username'='Test','password'='test'at line 1

我的錯誤是什麼?請檢查與您的MySQL服務器版本對應的手冊,

回答

46

,請注意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則不是。

10

我知道這是一個老的文章,但認爲我會分享INSERT INTO ... VALUES是批量更新一個有效的命令(無SET)和非常有用:

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

其中[值]是一個數組數組,每個數組包含這三個字段,並作爲表中的記錄插入。

0

對於其他人的搜索,我有這個相同的問題,但事實證明這是一個更復雜,不相關的問題。我沒有在文檔的最頂部聲明​​'use strict';

我知道這本身並不能解決數據庫插入問題,但它指出了我的整個腳本中編碼不正確的部分,一旦修復它們,它就按預期工作。