当我提交表单数据时,将数据添加到mySQL数据库中,并显示为 undefined 。
谁能告诉我什么问题,我是Nodejs开发的新手。
html doc
<html>
<form method="post" action="/add">
Name : <input name="mname" type ="text" > <p>
Age : <input name="mage" type ="text" > <p>
Department : <input name="mdepartment" type="text" > <p>
City : <input name="mcity" type = "text"> <p>
<input type="submit" value ="submit">
<input type="reset" value="reset">
</form>
</center>
和我的JavaScript文件如下
myapp.js
var express = require('express');
var path = require('path');
var mysql = require('mysql');
var app = express();
var bodyparser = require('body-parser');
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '1234'
});
connection.query('USE samplenodejs');
app.set('port',3000);
app.use(bodyparser.urlencoded({extended : false}));
app.get('/', function(req, res) {
console.log('GET /');
res.sendFile(__dirname + '/AddDetails.html');
});
app.post('/add',function(req,res){
connection.query("INSERT INTO test VALUES('','"+req.body.mname+"','"+req.body.mage+"','"+req.body.mcity+"','"+req.body.mdepartment+"')",function(err,res){
if(err) throw err;
});
res.redirect('/');
});
app.listen(app.get('port'));
console.log('Express server listening on port '+app.get('port'));
我希望您从客户端获得有效的数据。因此,下面是插入数据的功能。MySQL字符串常数应包含在"
引号中。
app.post('/add',function(req,res){
//Check this log in console, it should print all the values properly, if not issue is at clinet side
console.log('Input:: name='+req.body.mname+' age='+ req.body.mage +' city='+ req.body.mcity + ' dep=' + req.body.mdepartment, req.body);
var Query = `INSERT INTO test (id, name, age, city, department) VALUES ("", "${req.body.mname}","${req.body.mage}","${req.body.mcity}","${req.body.mdepartment}" )`;
//printing query in the console, if you still face the issue, you can execute this query manually.
console.log("Query :" + Query );
connection.query(Query, function(err,res){
if(err) {
console.error('Error in sql query:' + Query + ' Err', err);
throw err;
}
});
res.redirect('/');
});
您不应将用户输入直接传递到SQL查询,始终需要进行输入验证。
在nodejs中,最好使用json键:插入的值对,如下所示
connection.query('插入测试集?',{name:req.body.mname,age:req.body.mage},function(err,res({}({}(;
绝对是您的中间软件解析器。一旦重新检查中间软件并重新检查您发送到服务器的数据类型