代码之家  ›  专栏  ›  技术社区  ›  snikt

使用nodejs w/Express将表单数据发布到MySQL

  •  1
  • snikt  · 技术社区  · 8 年前

    我正在尝试编写一个简单的服务器。节点中的js将html文件中的表单数据发布到MySQL中。但是我得到了一个语法错误。我将在下面发布代码和错误。我正在努力解决这个问题。

    <head>
    
        <title>Learning Node Server</title>
        <link rel="stylesheet" href="style.css" />
    
    </head>
    
    
    <body>
    
        <div class="header">
            <h1>Learning Node and JS</h1>
            <p>With Ninad</p>       
        </div>
    
        <form action="/data" method="post">
            <label for="name">Enter your name in the database</label>
            <input type="text" name="name">
            <input type="submit" value="submit" />
            </form>
    
    
        <div class="container"></div>
    
        <script type="text/javascript" src="main.js"></script>
    
    </body>
    

    var express    = require('express');
    var app        = express();
    var mysql      = require('mysql');
    var bodyParser = require('body-parser');
    
    
    
    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({extended: false}));
    //app.use(express.json());
    //app.use(express.urlencoded());
    //app.use(app.router);
    app.use(express.static('public'));
    
    
    var connection = mysql.createConnection({
    
      host     : 'localhost',
      user     : 'root',
      password : '3748',
      database : 'nodedb'
    
    });
    
    connection.connect();
    
    
    app.get('/', function (req, res) {
    
        res.sendFile(__dirname + '/node.html');
    
    });
    
    
    app.post('/data', function(req, res){
    
        var username=req.body.name;
    
        connection.query("INSERT INTO `names` (name) SET ?", username.toString(), function(err, result){
            if(err) throw err;
    
            console.log("1 record inserted");
        });
    
        res.send(username);
    
    });
    
    //connection.end();
    
    app.listen(3000, function () {
    console.log('Example app listening on port 3000');
    });
    

    您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以获取第1行“SET”yahoo2“附近使用的正确语法 在查询时。顺序_packetToError(/home/ninad/node workspace/node_modules/mysql/lib/protocol/sequences/Sequence.js:52:14)

    2 回复  |  直到 8 年前
        1
  •  2
  •   Nicholas    8 年前

    app.post('/data', function(req, res){
        var username=req.body.name;
        connection.query("INSERT INTO `names` (name) VALUES (?)", username.toString(), function(err, result){
            if(err) throw err;
                console.log("1 record inserted");
            });
        res.send(username);
    });
    
        2
  •  0
  •   Syed Ayesha Bebe    8 年前

    尝试此代码。创建一个视图文件夹并将此jade文件放在其中。这是我的玉器文件,我把它命名为

    //index.jade
    
    <html>
    <head>
    <title> test </title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    </head>
    <body>
    <form action="/submit" method="POST">
    <fieldset>
    <label for="name">Name: </label>
    <input type="text" id="name" name="name" />
    <br/>
    <label for="email">Email: </label>
    <input type="email" id="email" name="email"  />
    <br/>
    <label for="description">Description: </label>
    <textarea id="description" name="description"></textarea>
    <br/>
    <input type="submit" value="create profile" />
    </fieldset>
    </form>
    </body>
    </html>
    

    这是我的服务器代码另存为 index.js

    var express = require('express');
    var router = express.Router();
    var bodyParser = require('body-parser');
    var mysql = require('mysql');
    var jade = require('jade');
    var con = mysql.createConnection({
         host: "localhost",
         user: "root",
         password: "",
         database: "test"
    });
    var app=express();
    var urlencodedParser = bodyParser.urlencoded({ extended: false });
    app.set('view engine', 'jade');
    app.get('/submit',function(req,res){
    res.render('index');
    });
    app.post('/submit',urlencodedParser, function(req, res, next) {
        console.log(req.body.name);
        console.log(req.body.email);
        console.log(req.body.description);
        con.connect(function(err) {
      if (err) throw  err;
      console.log("connected");
      var sql = "INSERT INTO `form`(`name`,`email`, `description`) VALUES ('"+req.body.name+"','"+req.body.email+"','"+req.body.description+"')";
      con.query(sql, function(err, result)  {
       if(err) throw err;
       console.log("table created");
      });
    });
    
      res.render('index', { title: 'Express' });
    });
    app.listen(3000,function(){
        console.log("Sever listening on port 3000");
    });
    

    test . 然后在其中创建一个表。在这里,我创建了一个名为form的表。作为运行节点服务器 node index.js . 和浏览器类型 http://localhost:3000/submit