首页 > 解决方案 > 如何在不使用路由器和 ejs 模块的情况下将表单数据从静态网站发布到 mysql 数据库

问题描述

我是后端开发的新手,尽管已经阅读了大量的视频教程和书籍,但没有解决我的问题的性质,我已经与这个问题作斗争了大约两个星期。如果有人能来帮助我,我将非常感激。以下是一些相关细节 HTML 表单

<div class="wrap">
       <h2>Sign Up</h2>
                        <form action="" method="POST" autocomplete="off">
                            <input type="text" name="firstname" required placeholder="First Name">
                            <input type="text" name="lastname" required placeholder="Last Name">
                            <input type="email" name="email" required placeholder="E-mail">
                            <input type="password" name="password" required placeholder="Password">
                            <input type="password" name="password" required placeholder="Password">
                            <input type="submit" value="Submit">
                        </form>
                    </div>

server.js 文件

const express = require("express");
const app = express();
const bodyParser = require("body-parser")
const mysql = require("mysql");


let connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '',
    database: 'couriersystem'
});


var port = 3000;


app.post('/', function (request, response) {
    let sql = `INSERT INTO clients(firstname, lastname, email, password)
           VALUES(?, ?, ?, ?)`;

    // execute the insert statment
    connection.query(sql);

    connection.end();
});
app.use(express.static("public"));
app.listen(port, function () {
    console.log("Server listening on port" + port);
});

app.get("/", function (req, res) {
    res.render("index.html")
});

标签: htmlmysqlnode.jsformsaction

解决方案


试试这个建议:

app.post('/', function (request, response) {
    /*get value and set as variables from the html form*/
    let fname = request.body.firstname;
    let lname = request.body.lastname;
    let email = request.body.email;
    let pwd = request.body.password;

    let sql = `INSERT INTO clients(firstname, lastname, email, password)
           VALUES('${fname}','${lname}','${email}','${pwd}')`;

    // execute the insert statment
    connection.query(sql, function(err, results, fields) {
        if (err) {
            return response.status(500).send(err); /*return error message if insert unsuccessful*/
            }
        else {
            connection.end();
            response.redirect('/'); /*redirecting the page after successful insert*/
   }
  })
});

还要编辑您的 html 表单以添加"/"操作,因此:

 <form action="/" method="POST" autocomplete="off">

推荐阅读