“插入到”不适用于node.js

时间:2015-05-26 18:50:43

标签: javascript mysql node.js

我想在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');
            });
        }
    });
});

3 个答案:

答案 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注入攻击开放,这也可能是您的查询无效的原因。

永远不要将数据直接连接到这样的查询中。它没有被正确地转义,所以任何保留的字符都变得模棱两可。使用参数化查询。具体取决于您用于连接数据库的任何内容,而您没有告诉我们。