无法使用INSERT检索SQL条目和?

时间:2016-10-06 21:00:48

标签: mysql node.js

问题在于我何时使用?使用JSON名称对值传递我的值的参数,mysql行不会在行中插入任何空白值(使用INSERT INTO语句)。

以下是我的节点中的一个函数:

function registerdone(req, res) {


    var username = req.body.username;
    var password = req.body.password;
    var firstname = req.body.firstname;
    var lastname = req.body.lastname;


    var encryptedPassword = bcrypt.hashSync(password, salt);
    console.log("encryptedPassword: " + encryptedPassword);
    var getUser = "INSERT INTO users (username, password, firstname, lastname) VALUES ('" + req.param("username") + "','" + encryptedPassword + "','" + req.param("firstname") + "','" + req.param("lastname") + "')";


    console.log("Query from registerdone is                       :" + getUser);

    mysql.fetchData(function(err, results) {
        if (err) {
            throw err;
            ejs.renderFile('./views/failRegister.ejs', function(err, result) {
                console.log('User with same Username already exists...');
            });
        } else {


            console.log(req.body.username + " Registered !!!");
            ejs.renderFile('./views/successRegister.ejs', function(err, result) {
                // render on success
                if (!err) {
                    res.end(result);
                }
                // render or error
                else {
                    res.end('An error occurred');
                    console.log(err);
                }
            });

        }
    }, getUser, queryParams);
}

当我使用时,这非常有效:

var getUser = "INSERT INTO users (username, password, firstname, lastname) VALUES ('" + req.param("username") + "','" + encryptedPassword + "','" + req.param("firstname") + "','" + req.param("lastname") + "')";

但是当我使用时:

var getUser = "INSERT INTO users (username, password, firstname, lastname) VALUES ( ? ) ";
var queryParams = {
    'username': username,
    'password': encryptedPassword,
    'firstname': firstname,
    'lastname': lastname
    };

并使用回调函数发送queryParams,我在mysql行中获取所有值为null。

mysql DAO是:

function getConnection(){
    var connection                 = mysql.createConnection({
        host                       : 'localhost',
        user                       : 'root',
        password                   : 'root',
        database                   : 'ebay_main',
        port                       : 3306
    });
    return connection;
}


function fetchData(callback, sqlQuery, queryParams){

    console.log("\nSQL Query       ::"+sqlQuery);

    var connection                 =getConnection();

    connection.query(sqlQuery, queryParams, function(err, rows, fields) {
        if(err){
            console.log("ERROR     : " + err.message);
        }
        else 
        {   // return err or result
            console.log("DB Results:"+JSON.stringify(rows));
            callback(err, rows);
        }
    });
    console.log("\nConnection closed..");
    connection.end();
}

1 个答案:

答案 0 :(得分:0)

您可以使用更简洁的语法:INSERT ?? SET ?

var table = 'users';
var queryParams = {
    'username': username,
    'password': encryptedPassword,
    'firstname': firstname,
    'lastname': lastname
};
connection.query('INSERT ?? SET ?', [table, queryParams ], function(err, rows, fields) {
    //...
});
相关问题