MYSQL Node.js 解析错误并抛出err错误
MYSQL Node.js parse error and throw err error
throw err; // Rethrow non-MySQL errors
^
Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''a', 'b', 'c'' at line 1
(我在表单中输入了a作为名称,b作为用户名,c作为密码)
我想不通问题出在哪里。
db.js:
function createUser(name, username, password){
var sql = "INSERT INTO users (name,username,password) VALUES ?";
var values = [name, username, password];
con.query(sql, [values], function (err, result) {
if (err) throw err;
console.log('inserted');
});
}
module.exports = {createUser};
server.js的相关部分:
app.post('/create', function(req,res) {
db.createUser(req.body.name,req.body.username,req.body.password);
res.status(200).send();
});
我认为您只需要在值周围加上额外的方括号:
var sql = "INSERT INTO users (name,username,password) VALUES ?";
var values = [[name, username, password]];
con.query(sql, [values], function (err, result) { ... });
此机制主要用于插入多行。您还可以分隔参数:
var sql = "INSERT INTO users (name,username,password) VALUES (?, ?, ?)";
var values = [name, username, password];
con.query(sql, values, function (err, result) { ... });
您必须为每个变量添加一个占位符
function createUser(name, username, password){
var sql = "INSERT INTO users (name,username,password) VALUES (?,?,?);";
var values = [name, username, password];
con.query(sql, values, function (err, result) {
if (err) throw err;
console.log('inserted');
});
}
module.exports = {createUser};
throw err; // Rethrow non-MySQL errors ^
Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''a', 'b', 'c'' at line 1
(我在表单中输入了a作为名称,b作为用户名,c作为密码)
我想不通问题出在哪里。
db.js:
function createUser(name, username, password){
var sql = "INSERT INTO users (name,username,password) VALUES ?";
var values = [name, username, password];
con.query(sql, [values], function (err, result) {
if (err) throw err;
console.log('inserted');
});
}
module.exports = {createUser};
server.js的相关部分:
app.post('/create', function(req,res) {
db.createUser(req.body.name,req.body.username,req.body.password);
res.status(200).send();
});
我认为您只需要在值周围加上额外的方括号:
var sql = "INSERT INTO users (name,username,password) VALUES ?";
var values = [[name, username, password]];
con.query(sql, [values], function (err, result) { ... });
此机制主要用于插入多行。您还可以分隔参数:
var sql = "INSERT INTO users (name,username,password) VALUES (?, ?, ?)";
var values = [name, username, password];
con.query(sql, values, function (err, result) { ... });
您必须为每个变量添加一个占位符
function createUser(name, username, password){
var sql = "INSERT INTO users (name,username,password) VALUES (?,?,?);";
var values = [name, username, password];
con.query(sql, values, function (err, result) {
if (err) throw err;
console.log('inserted');
});
}
module.exports = {createUser};