const express = require('express'); const bodyParser = require('body-parser'); const mssql = require('mssql'); const app = express(); app.use(bodyParser.urlencoded({ extended: false })); // 创建与数据库的连接 const connection = mssql.createConnection({ server: '192.168.10.223', user: 'sa', password: 'Servo01', database: 'demo' }); // 连接数据库 connection.connect(function (err) { if (err) { console.error('Error connecting to database:', err); return; } console.log('Connected to database!'); }); // 处理注册页面的 POST 请求 app.post('/', function (req, res) { const name = req.body.name; const password = req.body.password; const email = req.body.email; console.log('注册信息:'); console.log('用户名:', name); console.log('密码:', password); console.log('邮箱:', email); // 将数据保存到数据库 const query = `INSERT INTO username (name, password, email) VALUES ('${name}','${password}','${email}')`; const request = new mssql.Request(); request.query(query, function (err, request) { if (err) { console.error('Error saving data to database:', err); return; } console.log('数据已保存到数据库!'); }); res.send({ message:'请求成功' }) }); app.listen(3000, function () { console.log('Server is running on port 3000'); });这代码有什么问题吗,为什么数据放不进数据库
时间: 2024-04-13 12:31:09 浏览: 228
Nodejs中Express 常用中间件 body-parser 实现解析
根据你提供的代码,有几个问题可能导致数据无法成功插入数据库:
1. 连接数据库方法不正确:在你的代码中使用了 `mssql.createConnection` 方法来创建与数据库的连接,但是实际上应该使用 `mssql.connect` 方法来连接数据库。修改连接数据库的代码如下:
```javascript
// 创建与数据库的连接
mssql.connect({
server: '192.168.10.223',
user: 'sa',
password: 'Servo01',
database: 'demo'
}, function (err) {
if (err) {
console.error('Error connecting to database:', err);
return;
}
console.log('Connected to database!');
});
```
2. 注册页面的 POST 请求处理方法不正确:在你的代码中,你将注册页面的 POST 请求处理方法设置为 `/`,但是实际上应该是你注册页面的路由路径。请将 `app.post('/')` 改为你注册页面的实际路由路径,例如 `app.post('/register')`。
3. SQL 注入漏洞:你在插入数据到数据库时直接使用了用户提交的数据拼接 SQL 查询语句,这存在 SQL 注入的风险。为了避免这个问题,推荐使用参数化查询或者预编译语句来插入数据。修改插入数据到数据库的代码如下:
```javascript
// 将数据保存到数据库
const query = 'INSERT INTO username (name, password, email) VALUES (@name, @password, @email)';
const request = new mssql.Request();
request.input('name', mssql.VarChar, name);
request.input('password', mssql.VarChar, password);
request.input('email', mssql.VarChar, email);
request.query(query, function (err, result) {
if (err) {
console.error('Error saving data to database:', err);
return;
}
console.log('数据已保存到数据库!');
});
```
通过使用参数化查询,可以确保用户提交的数据不会被误解为 SQL 查询语句的一部分,从而提高了安全性。
请根据以上建议进行修改,并尝试重新运行代码来查看问题是否解决。如果问题仍然存在,请提供更详细的错误信息以便进一步排查。
阅读全文