【问题标题】:SQL inserting empty records in database - using JavaScriptSQL 在数据库中插入空记录 - 使用 JavaScript
【发布时间】:2019-10-14 18:52:59
【问题描述】:

我正在尝试插入从我网站上填写的表格中收集的数据,并将该数据存储在 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.net',
        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'); });

【问题讨论】:

    标签: javascript sql node.js sql-insert


    【解决方案1】:

    变量不在字符串内部进行计算。当您在查询中输入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!");
    });
    

    我无法解释为什么您会收到空记录 - 由于查询中的值无效,您应该会收到错误。

    【讨论】:

    • 这段代码有效!非常感谢,这一定是它插入空记录的原因,因为在使用占位符并提供值之后,数据已保存到数据库中并且不再插入空记录 - 非常感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2019-04-19
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-18
    相关资源
    最近更新 更多