1
問題是,當我使用?參數用於通過JSON名稱對值傳遞我的值,但mysql行不會插入行中的空白值(使用INSERT INTO語句)。無法使用INSERT和?檢索SQL條目
以下是我的節點的功能:
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();
}
嗨,我不知道node.js的語法。但在其他語言,你必須寫一個'?'對於每個參數...你嘗試類似var getUser =「INSERT INTO用戶(用戶名,密碼,名字,姓氏)VALUES(?,?,?,?)」; ? –