“插入”不适用于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没有任何关系。

注意:看看如何准备好你的语句以保存的方式查询它们。

它不是SETVALUES ,你必须改变这一点。 另外,要注意SQL注入。

您对SQL注入攻击广泛开放 ,也可能是您的查询不起作用的原因。

不要将数据直接连接到像这样的查询中。 它没有被正确地转义,所以任何保留的字符都变得模糊不清。 使用参数化查询。 你如何做到这一点具体取决于你用什么来连接到你的数据库,你没有告诉我们。