Py学习  »  DATABASE

如何将JavaScript变量从提交按钮中的NoDjs推到MySQL数据库中?

Aryan Indarapu • 4 年前 • 205 次点击  

所以我想使用nodejs将javascript变量推送到mysql中。我尝试使用以下代码:

var mysql = require('mysql');

var con = mysql.createConnection({
    host: "xxx.xxx.xxx.xxx",
    user: "loginUSER",
    password: "xxxxx",
    database: "scoutingData"
});

function databaseCon() {
    console.log("submit works and connected.");
    con.connect(function(err) {
      if (err) throw err;
      console.log("Connected!");
      var sql = "INSERT INTO scoutingDataTab (compId, teleop_cargoTot, teleop_hatchTot) VALUES (compId, teleop_noOfCargo, teleop_noOfHatch)";
      con.query(sql, function (err, result) {
        if (err) throw err;
        console.log("1 record inserted");
      });
    });
}

这里,变量设置在javascript的顶部,databasecon()函数从submit按钮调用。 compId, teleop_cargoTot, teleop_hatchTot 是数据库中的列和 compId, teleop_noOfCargo, teleop_noOfHatch 是js中的变量。我的web服务器上下载了node.js。我试着点击提交,一个错误弹出,但页面重新加载太快。我该怎么解决?

提前谢谢!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/46380
 
205 次点击  
文章 [ 1 ]  |  最新文章 4 年前
mat.mik
Reply   •   1 楼
mat.mik    5 年前

如果 compId, teleop_noOfCargo, teleop_noOfHatch 是比你需要使用的变量。你几乎没有选择,例如:

  1. 使用字符串插值:
var sql = `INSERT INTO scoutingDataTab (compId, teleop_cargoTot, teleop_hatchTot) VALUES (${compId}, ${teleop_noOfCargo}, ${teleop_noOfHatch})`;
  1. 连接字符串:
var sql = "INSERT INTO scoutingDataTab (compId, teleop_cargoTot, teleop_hatchTot) VALUES (" + compId + ", " + teleop_noOfCargo + ", " + teleop_noOfHatch + ");";

现在你在插入字符串 compId 我是说, teleop_noOfCargo 我是说, teleop_noOfHatch ,而不是变量。

注意(感谢@evert)有可能注入sql。为了防止使用:

var sql = "INSERT INTO scoutingDataTab (compId, teleop_cargoTot, teleop_hatchTot) VALUES (?, ?, ?)";
      con.query(sql, [compId, teleop_noOfCargo , teleop_noOfHatch], function (err, result) {