【问题标题】:SQL SELECT FROM with multiple variables具有多个变量的 SQL SELECT FROM
【发布时间】:2019-08-11 17:44:42
【问题描述】:

我想发出一个 SELECT FROM 请求,而不是列的名称(即 Alan),我想用一个变量(即名为伪的变量)替换它,我知道它可以在 php 中完成,但我正在尝试使用 Node.js 在 javascript 中完成。

我已尝试替换列的名称,但控制台中的结果错误。

没有错误信息,但是控制台显示的数据是空的,它只显示一个空括号。

var pseudo = "Alan";
var onlinepeers = "Sarah";

var mysql = require('mysql');

let connection = mysql.createConnection({
  host: "localhost",
  user: "root",
  password: "",
  database: "espace_membre"
});

connection.connect(function(err) {
  if (err) throw err;
  connection.query("SELECT ALan FROM matches WHERE Alan = '" + onlinepeers + "'", function(err, result) {
    if (err) throw err;
    console.log(result);
  });
});

【问题讨论】:

  • 学习使用参数。不要使用参数值混淆查询字符串。
  • 这种问题是架构设计不佳的症状

标签: javascript mysql sql node.js


【解决方案1】:

你可以试试这样,使用template literals

var pseudo = "Alan";
    var onlinepeers = "Sarah";

    var mysql = require('mysql');

    let connection = mysql.createConnection({
      host: "localhost",
      user: "root",
      password: "", 
      database: "espace_membre"
    });

    connection.connect(function(err) {
      if (err) throw err;
      connection.query(`SELECT Alan FROM matches WHERE ${pseudo}=${onlinepeers}`, function (err, result) {
        if (err) throw err;
        console.log(result);
      });
    });

更好地使用参数化查询

    let sql=`SELECT Alan FROM matches WHERE ${pseudo} =?`

    connection.connect(function(err) {
          if (err) throw err;
          connection.query(sql,[onlinepeers], function (err, result) {
            if (err) throw err;
            console.log(result);
          });
        });

【讨论】:

  • 嗨,感谢您的回答,我尝试使用第一个示例,但控制台返回“未定义”一词,没有进一步解释。对于第二个示例代码,控制台返回“参考错误:未定义查询”,因此我正在研究以解决来自控制台的最后一条消息
  • 您的专栏在查询中有L 而不是l 请检查一下,我已经更新了我的答案,它将是sql 而不是query,更新了我的答案请检查跨度>
【解决方案2】:

首先创建一个queryString如下:

let queryString = "SELECT " + pseudo + " FROM matches WHERE " + pseudo + " = .....

然后:

connection.query(queryString) 中使用变量queryString

【讨论】:

  • 感谢您的回答,我使用了您的方法,但是控制台显示的结果是错误的,它显示了两次列名而不是列名和其中的数据(onlinepeer) .
  • + SQL 注入漏洞
  • 非常糟糕的形式,因为这极易受到 SQL 注入的攻击。
  • 查询正在服务器上构建,javascript代码正在服务器上运行。没有用户输入,因此不容易受到 SQL 注入的攻击。
猜你喜欢
  • 2019-05-24
  • 1970-01-01
  • 2016-06-11
  • 1970-01-01
  • 1970-01-01
  • 2021-07-17
  • 1970-01-01
  • 1970-01-01
  • 2010-11-23
相关资源
最近更新 更多