我想在node.js和mysql(插入)上查看用户注册表单的简单查询。
此查询不起作用:它不会在数据库中插入数据,我不确定这是否是调用查询的正确方法。
app.route('/adminpanel/registeruser')
.post(function(req, res) {
pool.getConnection(function(err, connection) {
if(err) {
console.log(err);
connection.release();
} else {
var username = req.body.username,
password = req.body.password,
name = req.body.name,
email = req.body.email,
company = req.body.company,
active = req.body.active,
myquery = "INSERT INTO `oneclick`.`oc_users` (`username`, `password`, `name`, `email`, `company`, `active`) SET ('" + username + "', '" + password + "', '" + name + "', '" + email + "', '', '" + company + "', '" + active + "')";
connection.query(myquery, function(err, rows) {
connection.release();
res.redirect('/adminpanel/newuser');
});
}
});
});
答案 0 :(得分:1)
这就是你正在做的事情:
INSERT INTO [...] ([...]) SET [...]
这是不可能的; SET 关键字仅适用于更新语句。
你应该使用:
INSERT INTO table_name
VALUES (value1,value2,value3,...);
更新语句如下所示:
UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;
你只是将它们混合在一起,它与nodejs无关。
注意:请查看如何准备语句以保存方式查询它们。
答案 1 :(得分:1)
不是SET
而是VALUES
,你必须改变它。
另外,请注意SQL注入。
答案 2 :(得分:0)
您对SQL注入攻击开放,这也可能是您的查询无效的原因。
永远不要将数据直接连接到这样的查询中。它没有被正确地转义,所以任何保留的字符都变得模棱两可。使用参数化查询。具体取决于您用于连接数据库的任何内容,而您没有告诉我们。