javascript - 使用 node/js/MySQL 工作台将变量传递给查询字符串
问题描述
问题:当将变量传递到插入语句时,我收到一个空插入到我的数据库中。变量是 firstName、lastName、email、passW。
我所知道的:我知道我正在取回用户输入表单数据。我正在安慰它们在插入语句之前存储的变量,该语句起作用并将表单数据打印到控制台。当表单在网页上提交时,它存储了“firstName”、“LastName”、“email”、“passW”这些都是变量。但是当我将它们传递给 MySQL Workbench 时,它们会以 null 的形式发布。我的结论是变量没有被正确传递,但是当我尝试来自这个页面和其他页面的建议时,它会抛出一个语法错误,即 SQL 的语法不正确。我尝试添加尽可能多的信息,如果您需要我不提供或需要我发布测试结果的信息,LMK。
代码
var express = require("express");
var http = require("http");
var mysql = require("mysql");
var express = require("express");
var path = require("path");
var app = express();
var PORT = 3001;
// Sets up the Express app to handle data parsing
app.use(express.urlencoded({ extended: false }));
app.use(express.static(path.join(__dirname, 'public'))); // testing
app.use(express.json());
app.use("/assets", express.static("assets"))
// home page route
app.get("/", function(req, res) {
res.sendFile(path.join(__dirname, "index.html"));
});
// create account route
app.get("/create", function(req, res) {
res.sendFile(path.join(__dirname, "create.html"))
});
// login route
app.get("/login", function(req, res) {
res.sendFile(path.join(__dirname, "login.html"))
});
// DB Connection
var connection = mysql.createConnection({
host: "localhost",
user: "root",
password: "",
database: "sportsCorner",
port: 3306,
});
// connection response
connection.connect(function (err) {
console.log("SQL connected as id " + connection.threadId)
});
// Takes the data from our login form
app.post('/handler', function (req, res) {
// user input from the forms
var firstName = req.body.firstName;
var lastName = req.body.lastName;
var email = req.body.email;
var passW = req.body.password;
// testing our responses stored in the variables
console.log("F: " + firstName, "L: " + lastName, "E: " + email, "P: " + passW)
connection.query("INSERT INTO loginInfo VALUES(firstName, lastName, email, passW)", function (err, res) {
if (err) throw err;
console.log("Inserted ...")
});
// Getting login info from DB
connection.query('SELECT * from loginInfo', function (err, res) {
if (err) throw err;
console.log(res)
console.log("Response ...")
})
});
// Start Server
app.listen(PORT, function() {
console.log("Server listening on: http://localhost:" + PORT);
});
</script>
<HTML> (FORM)
<form method="POST" action="/handler">
<input type="text" name="firstName" placeholder="First Name">
<input type="text" name="lastName" placeholder="Last Name">
<input type="email" name="email" placeholder="Email">
<input type="password" name="password" placeholder="Password">
<input type="submit" />
</form>
</HTML>
提前感谢您的帮助
解决方案
尝试改变这一点:
connection.query("INSERT INTO loginInfo VALUES(firstName, lastName, email, passW)", function (err, res) {
if (err) throw err;
console.log("Inserted ...")
});
对此:
connection.query(`INSERT INTO loginInfo VALUES('${firstName}', '${lastName}', '${email}', '${passW}')`, function (err, res) {
if (err) throw err;
console.log("Inserted ...")
});
推荐阅读
- kotlin - 有没有办法用声明类型的子类型覆盖抽象属性?
- typescript - 为什么在使用“sam invoke local”时调试会中断对 AWS::Lamba::LayerVersion 的访问?
- python - keras 不使用 ImageDataGenerator 将输入除以常数
- javascript - 如果我与数字进行比较并将结果分配给新变量,为什么 JS 会返回 NaN?
- python - 运行批处理程序时从 python 文件加载变量失败
- here-api - 地理编码自动完成示例不会使用我的 api 密钥返回结果
- javascript - 通过js将多个元素传递给php
- java - 如何避免 URIBuilder 将逗号编码为“%2C”或查询参数中的其他字符
- excel - 在 .PDF 中导出范围时插入分页符
- php - PHP 有条件地需要/使用库类