SQL вставка пустых записей в базу данных - используя JavaScript - PullRequest
0 голосов
/ 14 октября 2019

Я пытаюсь вставить данные, собранные из формы, заполненной на моем веб-сайте, и храню эти данные в базе данных на 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'); });

1 Ответ

0 голосов
/ 14 октября 2019

Переменные не оцениваются внутри строк. Когда вы вводите 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!");
});

Я не могу объяснить, почему вы получаете пустые записи - вы должны получить ошибку из-за недопустимых значений взапрос.

...