使用express和post请求将数据从输入传递到mysql

rdrgkggo  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(403)

这是我的html和express代码片段:

<!DOCTYPE html>
 <html lang="en">
 <head>
    <meta charset="UTF-8">
    <title>TEST</title>
 </head>
 <body>
    <form action="http://localhost:3000/tools" method="POST">
        <p>
            Set name: <input type="text" name="set_name">
        </p>
        <p>
            Description: <input type="text" name="description">
        </p>
        <input type="submit" value="Submit">
    </form>

 </body>
</html>

并表示:

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

const {parse}=require('querystring'); 
const connection = mysql.createConnection({
    host: '127.0.0.1',
    user: 'root',
    password: '',
    database: 'toolscatalog'
});
const app = express();
const urlParser=bodyParser.urlencoded({extended:false});

function dbConnection(SQLquery, result) {
    connection.connect();
    connection.query(SQLquery, (error, results) => {
    if (error) throw error;
    result.send(results);
    console.log(results);
    });
    connection.end();
}

app.route('/tools')
    .get((req, res) => {
    dbConnection('SELECT * FROM tools', res);
    });

app.post('/tools',urlParser, (req, res) => {
    const set_name = req.body.set_name;
    const desc = req.body.description;
    console.log(set_name, desc);     //console: undefined undefined
    dbConnection(`INSERT INTO tools(set_name,description) VALUES (${set_name}, ${desc})`, res);
});

app.listen(3000, function () {
    console.log('listening on: 3000')
});

mysql列是
id-自动递增不为空,
设置名称varchar,
描述varchar。
似乎在提交表单之后,服务器上的bodyparser无法读取表单中的数据。console.log提供name和desc变量的未定义值。如何将信息从输入传递到数据库?
另一个问题是get请求。运行服务器后的第一个请求工作正常。从数据库获取数据的第二个请求返回错误并使服务器崩溃。

1l5u6lss

1l5u6lss1#

我终于找到了问题的答案${sql查询中的set{name}和${description}应该作为引号中的字符串值传递,这意味着“${set{name}”和“${description}”。

相关问题