SQL在数据库中插入空记录
我试图插入从我的网站上填写的表单中收集的数据,并将该数据存储在phpMyAdmin上的数据库中。
一切正常,我收到消息“已连接到数据库。”和“记录已成功插入!”,表示网站与数据库之间的通信正常。但是,当我检查数据库时,有空记录(正在插入记录,但没有值)。
不确定这是否有帮助,但是函数'db'的参数说“未使用”。
var name = request.body.FirstName;
var surname = request.body.LastName;
var email = request.body.Email;
var message = request.body.Message;
console.log(name + " " + surname);
console.log(email); console.log(message);
var emailMessage = "New message from " + name + " " + surname + "(" + email + ") " + message;
function mail(emailMessage){
var nodemailer = require("nodemailer");
var transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'XXX', // add your username
pass: 'XXX' // add your password
}
});
var mailOptions = {
from: 'XXX', // add sender email (your email)
to: 'XXX', // add recipient email (maybe a friend)
subject: 'Message from Node.js app',
html: '<p>' + emailMessage + '</p>'
};
transporter.sendMail(mailOptions, function(error, info){
if (error) {
console.log(error);
} else {
console.log('Email sent: ' + info.response);
}
});
}
mail(emailMessage);
function db(name, surname, email, message){
var mysql = require('mysql');
var connection = mysql.createConnection({
host: 'db4free',
user: 'XXX',
password: 'XXX',
database: 'feedback_db'
});
connection.connect(function(err) {
if (err) throw err;
console.log("Connected to Database.");
var sql = "INSERT INTO messages (Name, Surname, Email, Message) VALUES (name, surname, email, message)";
connection.query(sql, function (err, result) {
if (err) throw err;
console.log("Records Inserted Successfully!");
});
}); }
db(name, surname, email, message);
response.sendFile(__dirname + '/success.html'); });
回答如下:变量不在字符串内求值。在查询中输入VALUES (name, surname, email, message)
时,它不使用变量。您应该在此处放置占位符,并提供值作为参数。
var sql = "INSERT INTO messages (Name, Surname, Email, Message) VALUES (?, ?, ?, ?)";
connection.query(sql, [name, surname, email, message], function(err, result) {
if (err) throw err;
console.log("Records Inserted Successfully!");
});
我无法解释为什么您得到空记录-由于查询中的值无效,您应该得到一个错误。