【问题标题】:passing parameters into sql insert将参数传递到sql插入
【发布时间】:2021-01-14 17:41:56
【问题描述】:

我有一个插入查询,我在其中将一个字符串插入到我的 db2 数据库中,但该字符串可能包括 " or '。我可以使用插入参数来解决这个问题吗?

var addProducts = "insert into PRODUCTS ( ITEM, DESCRIPTION, PRICE, SIZES, IMAGE ) VALUES ('" +
  req.query.item +
  "', '" +
  req.query.description +
  "', '" +
  req.query.price +
  "', '" +
  size +
  "', '" +
  image_url +
  "' )";

这就是我现在所拥有的......提前感谢您的帮助:)

【问题讨论】:

    标签: javascript sql node.js db2 ejs


    【解决方案1】:

    我希望这对你有用:

    使用 `` 和 ${}:

    var addProducts = `INSERT INTO PRODUCTS ( ITEM, DESCRIPTION, PRICE, SIZES, IMAGE ) VALUES (${req.query.item}, ${req.query.description}, ${req.query.price}, ${size}, ${image_url} )`;
    

    在类型 diff 中添加 .toString():

    req.query.price.toString();
    size.toString();
    

    如果你需要引号:

    var addProducts = `INSERT INTO PRODUCTS ( ITEM, DESCRIPTION, PRICE, SIZES, IMAGE ) VALUES ('${req.query.item}', '${req.query.description}', '${req.query.price}', '${size}', '${image_url}' )`;
    

    此外,您可以使用 \

    转义字符串中的引号
    const str = "\"\'";
    
    
    
    var addProducts = `INSERT INTO PRODUCTS ( ITEM, DESCRIPTION, PRICE, SIZES, IMAGE ) VALUES (\'${req.query.item}\', \'${req.query.description}\', \'${req.query.price}\', \'${size}\', \'${image_url}\' )`;
    

    我做了这个练习:

    sql.connect(sqlConfig, function() {
        var request = new sql.Request();
        var stringRequest = "INSERT INTO PRODUCTS (ITEM, DESCRIPTION, PRICE, SIZES, IMAGE) VALUES ("+ req.query.item +","+ req.query.description +","+ req.query.price+","+ size +","+image_url+" )";
        request.query(stringRequest, function(err, recordset) {
            if(err) console.log(err);
            res.end(JSON.stringify(recordset)); // Result in JSON format
        });
    });
    

    【讨论】:

    • 嗨!不幸的是,这对我不起作用,它实际上仍然给了我同样的错误,但是在一些值上比现在更多次......
    • 喂,对不起。我添加了一个练习,希望对您有所帮助。如果错误仍然存​​在,你能把错误发给我吗?和代码的另一部分有更多的想法。干杯:)
    【解决方案2】:

    为了防止这个问题和所有类型的 SQL 注入,您应该使用查询参数并让驱动器将变量绑定到参数。

    看看: 3) .query(sqlQuery [, bindingParameters], callback)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-06
      • 2017-09-17
      相关资源
      最近更新 更多