我正在尝试使用node.js插入一些数据。我已经编写了以下代码,并通过npm安装了MySQL支持,但是我无法使用INSERT INTO该表。
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’
我怎么了
请注意以下文档node-mysql:
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’
如果您注意了,您可能已经注意到,这种转义可以使您执行以下整洁的事情:
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’
id
title
请注意,它们使用SET代替VALUES。INSERT INTO ... SET x = y是有效的MySQL查询,而INSERT INTO ... VALUES x = y不是。
SET
VALUES
INSERT INTO ... SET x = y
INSERT INTO ... VALUES x = y