簡體   English   中英

使用 Node.js 和 MySQL 將數據插入表中的問題

[英]problem Insert Data Into the Table Using Node.js and MySQL

我在從網站上的 HTML 表單向表中插入數據時遇到問題。 如果你能幫助我,我將不勝感激。 這是我的代碼:

用戶.js:

 const express = require("express"); const router = express.Router(); const db = require("../database"); router.get("/form", (req, res, next) => { res.render("users.ejs"); }); router.post("/create", (req, res, next) => { let userDetails = req.body; let sql = "insert into users set ?"; db.query(sql, userDetails, (err, results, fields) => { if (err) throw err; console.log("user data inserted successfully"); }); res.redirect("back"); }); module.exports = router;

用戶.ejs:

 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body> <div class='user-detail'> <h2>create user data</h2> <form action="/users/create" method="post"> <label>Full Name</label> <input type="text" placeholder="enter fullname" name="fullName" required> <label>Email Address</label> <input type="email" placeholder="enter email address" name="emailAddress" required> <label>City</label> <input type="text" placeholder="enter full city" name="city"> <label>Country</label> <input type="text" placeholder="enter full country" name="country"> <button type="submit">Submit</button> </form> </div> </body> </html>

錯誤:

PS C:\Users\yaran\Desktop\mysql.ejs.node> node app.js server is running on port=3000.. 數據庫連接成功! C:\Users\yaran\Desktop\mysql.ejs.node\node_modules\mysql\lib\protocol\Parser.js:437 throw err; // 重新拋出非 MySQL 錯誤 ^

錯誤:ER_PARSE_ERROR:您的 SQL 語法有錯誤; 檢查與您的 MariaDB 服務器版本相對應的手冊,以了解在“?”附近使用的正確語法。 在第 1 行的 Query.Sequence._packetToError (C:\Users\yaran\Desktop\mysql.ejs.node\node_modules\mysql\lib\protocol\sequences\Sequence.js:47:14) 在 Query.ErrorPacket (C: \Users\yaran\Desktop\mysql.ejs.node\node_modules\mysql\lib\protocol\sequences\Query.js:79:18) 在 Protocol._parsePacket (C:\Users\yaran\Desktop\mysql.ejs.node \node_modules\mysql\lib\protocol\Protocol.js:291:23) 在 Parser._parsePacket (C:\Users\yaran\Desktop\mysql.ejs.node\node_modules\mysql\lib\protocol\Parser.js:433 :10) 在 Parser.write (C:\Users\yaran\Desktop\mysql.ejs.node\node_modules\mysql\lib\protocol\Parser.js:43:10) 在 Protocol.write (C:\Users\yaran \Desktop\mysql.ejs.node\node_modules\mysql\lib\protocol\Protocol.js:38:16) 在 Socket。 (C:\Users\yaran\Desktop\mysql.ejs.node\node_modules\mysql\lib\Connection.js:88:28) 在 Socket。 (C:\Users\yaran\Desktop\mysql.ejs.node\node_modules\mysql\lib\Connection.js:526:10) 在 Socket.emit (node:events:527:28) 在 addChunk (node:internal/流/可讀:315:12) -------------------- 在 Protocol._enqueue (C:\Users\yaran\Desktop\mysql.ejs.node\node_modules\ mysql\lib\protocol\Protocol.js:144:48) 在 Connection.query (C:\Users\yaran\Desktop\mysql.ejs.node\node_modules\mysql\lib\Connection.js:198:25) 在 C :\Users\yaran\Desktop\mysql.ejs.node\routes\users.js:12:6 at Layer.handle [as handle_request] (C:\Users\yaran\Desktop\mysql.ejs.node\node_modules\express \lib\router\layer.js:95:5) 在下一個 (C:\Users\yaran\Desktop\mysql.ejs.node\node_modules\express\lib\router\route.js:144:13) 在 Route。 dispatch (C:\Users\yaran\Desktop\mysql.ejs.node\node_modules\express\lib\router\route.js:114:3) 在 Layer.handle [as handle_request] (C:\Users\yaran\Desktop \mysql.ejs.node\node_modules\express\lib\router\layer.js:95:5) 在 C:\Users\yaran\Desktop\mysql.ejs.node\node_modules\express\lib\router\index.js :28 4:15 在 Function.process_params (C:\Users\yaran\Desktop\mysql.ejs.node\node_modules\express\lib\router\index.js:346:12) 在下一個 (C:\Users\yaran\Desktop \mysql.ejs.node\node_modules\express\lib\router\index.js:280:10) { code: 'ER_PARSE_ERROR', errno: 1064, sqlMessage: "你的 SQL 語法有錯誤; 檢查與您的 MariaDB 服務器版本相對應的手冊,以了解在“?”附近使用的正確語法。 在第 1 行",sqlState:'42000',索引:0,sql:'插入用戶集? }

如果你的req.body真的只有一個變量,你必須把它放在方括號中。

const express = require("express");
const router = express.Router();
const db = require("../database");
const bodyParser = require('body-parser');
router.use(bodyParser.urlencoded({ extended: true }));

router.get("/form", (req, res, next) => {
  res.render("users.ejs");
});

router.post("/create", (req, res, next) => {
  let userDetails = req.body;
  console.log(userDetails);
  let sql = "insert into users set ?";
  db.query(sql, [userDetails], (err, results, fields) => {
    if (err) throw err;
    console.log("user data inserted successfully");
  });
 
  res.redirect("back");
});

module.exports = router;

'?' 附近使用的語法在第 1 行

似乎來自:

insert into users set ?

我看到兩個問題:

  • 如果插入,則沒有插入語法在末尾簡單地“設置...”。 (多學習 MySQL。)
  • db.query()未能替換“?”。 (更多學習node.js)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM