Javascript 使用Express和POST请求将数据从输入传递到MySQL
这是我的HTML和Express代码片段: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">
<!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
- 描述:瓦查尔
另一个问题是GET请求。运行服务器后的第一个请求工作正常。从DB获取数据的第二个请求返回错误并使服务器崩溃。我终于找到了问题的答案$SQL查询中的{set_name}和${description}应该作为引号中的字符串值传递,这意味着“${set_name}”和“${description}”。您在post中发送的是
first_name
和last_name
请求参数,您希望如何获取set_name
和description
,doconsole.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')
});