Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Express和POST请求将数据从输入传递到MySQL_Javascript_Mysql_Express_Put - Fatal编程技术网

Javascript 使用Express和POST请求将数据从输入传递到MySQL

Javascript 使用Express和POST请求将数据从输入传递到MySQL,javascript,mysql,express,put,Javascript,Mysql,Express,Put,这是我的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">

这是我的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>
MySQL列是

  • id-自动增量不为空
  • 设置_name varchar
  • 描述:瓦查尔
似乎在提交表单之后,服务器上的bodyParser无法读取表单中的数据。Console.log给出了namedesc变量的未定义值。 如何将信息从输入传递到数据库


另一个问题是GET请求。运行服务器后的第一个请求工作正常。从DB获取数据的第二个请求返回错误并使服务器崩溃。

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

您在post中发送的是
first_name
last_name
请求参数,您希望如何获取
set_name
description
,do
console.log(req.body)
你会看到的。我修复了它,但没有任何改变。还是同样的问题。确保你已经阅读了关于如何正确转义用户输入的库。如果您只是将用户提交的内容插入到SQL中,您可能会受到SQL注入攻击。例如,如果我将工具描述设置为
'1');升降台工具我可能会删除您的整个工具表。人们还使用SQL注入从数据库中窃取数据。基本上,每个sql查询库都有安全地传递用户提交的值的方法,而不必担心注入。
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')
});