2017-08-26 14 views
0

ノードに簡単なserver.jsを書き込んで、HTMLファイルからフォームデータをMySQLに投稿しようとしています。しかし、私は構文エラーを取得しています。私は以下のコードとエラーを投稿します。私はこの問題を解決するために苦労しています。nodejs w/Expressを使用して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'); 
}); 

私は名前としてyahoo2を入力した場合、これは、私はあなたのSQL構文でエラーが発生している

をGET-エラーです。 Query.Sequence._packetToError(/ home/ninad/node-workspace/node_modules/mysql/lib/protocol)で、1行目の 'SET' yahoo2 ''の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。 /sequences/Sequence.js:52:14)

答えて

2

それは

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); 
}); 
+0

あなたは良い答えを追加してください!なぜあなたがそれを変更したのかの説明を加えることで、それをより良くすることができます。 :)。 –

+1

値の挿入構文は次のとおりです。 'INSERT INTOテーブル(列、列、...)VALUES(値、値、...)' – Nicholas

0

このコードを試してみてください、これでなければなりません。ビューフォルダを作成し、この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> 

として、それを名付け私のヒスイのファイルです。このサーバは、ここで私は名前testと私のデータベースを作成したデータベースを作成して実行する前に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"); 
}); 

として保存する私のサーバーコードです。次に、テーブルを作成します。ここでは、formという名前のテーブルを作成しました。ノードサーバーをnode index.jsとして実行します。ブラウザタイプはhttp://localhost:3000/submitです。そして、次にデータベースを見てください。これが助けてくれることを祈っています...

関連する問題