“插入”不适用于node.js
我想要一个简单的查询node.js和mysql(插入)的用户registry单。
此查询不起作用:它不会在数据库中插入数据,我不确定是否是调用查询的正确方法。
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'); }); } }); });
你试图混合一个插入语句和一个更新语句
这就是你在做什么:
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没有任何关系。
注意:看看如何准备好你的语句以保存的方式查询它们。
它不是SET
但VALUES
,你必须改变这一点。 另外,要注意SQL注入。
您对SQL注入攻击广泛开放 ,也可能是您的查询不起作用的原因。
不要将数据直接连接到像这样的查询中。 它没有被正确地转义,所以任何保留的字符都变得模糊不清。 使用参数化查询。 你如何做到这一点具体取决于你用什么来连接到你的数据库,你没有告诉我们。