【问题标题】:sql query failing on insert插入时sql查询失败
【发布时间】:2025-11-30 09:15:01
【问题描述】:

我有这个简单、标准和简单的 sql 查询,但我无法找出问题所在。看起来还不错,但无法找出问题所在...它给了我一个错误(您可以在下面找到),但首先,这是插入查询。

//DB2 CONNECTION FOR ADDING PRODUCTS
var addProducts =
  "insert into PRODUCTS ( ITEM, DESCRIPTION, PRICE, SIZES, DIVISION, XS, S, M, L, XL, INTER, EACH_CASE ) VALUES ('" +
  req.body.item +
  "', '" +
  req.body.description +
  "', '" +
  req.body.price +
  "', '" +
  allSizes +
  "', '" +
  req.body.category +
  "', '" +
  req.body.xs +
  "', '" +
  req.body.s +
  "', '" +
  req.body.m +
  "', '" +
  req.body.l +
  "', '" +
  req.body.xl +
  "', '" +
  inter +
  "', '" +
  each_case +
  "' )";
 
    ibmdb.open(req.session.ibmdbconnDash, function (err, conn) {
      if (err) return console.log(err + "getting error here 1");
      conn.query(addProducts, function (err, rows) {
        if (err) {
          console.log(err + "getting error here 1");
        }

        var getProductDetails = "select * from products where ITEM = '" + req.body.item + "'";
        ibmdb.open(req.session.ibmdbconnDash, function (err, conn) {
          if (err) return console.log(err + "getting error here 2");
          conn.query(getProductDetails, function (err, gianluca) {
            if (err) {
              console.log(err + "getting error here 2");
            }

            var productAddedValue = ""
            console.log(gianluca)
            res.render("add-products2", {
              page_title: "add-products2",
              data: gianluca,
              userName: req.session.username,
              FN: req.session.firstname,
              LN: req.session.lastname,
              CO: req.session.company,
              productAddedValue: productAddedValue,
            });

            conn.close(function () {
              console.log("closed the function /add-products p2");
            });
          });

}); 它给了我这个错误:

[Error: [IBM][CLI Driver][DB2/LINUXX8664] SQL0010N  The string constant beginning with "' )" does not have an ending string delimiter.  SQLSTATE=42603
] {
  error: '[node-ibm_db] SQL_ERROR',
  sqlcode: -10,
  state: '42603'
}

不知道如何解决这个问题!感谢您的帮助!

【问题讨论】:

  • 你能附上你用来向数据库发送命令的查询吗?
  • @JaisonThomas 刚刚更新了问题
  • 使用准备好的语句 (conn.prepare) 而不是查询 (conn.query)。使用准备好的语句修复了由于 req.body 值中的单引号引起的错误。

标签: javascript sql node.js db2


【解决方案1】:

假设您使用的是 nodejs es5,这应该可以工作,而且更干净

const addProducts =  `insert into PRODUCTS (ITEM, DESCRIPTION, PRICE, SIZES, DIVISION, XS, S, M, L, XL, INTER, EACH_CASE) VALUES ('${req.body.item}', '${req.body.description}', '${req.body.price}', '${allSizes}', '${req.body.category}', '${req.body.xs}', '${req.body.s}', '${req.body.m}', '${req.body.l}', '${req.body.xl}', '${inter}', '${each_case}');`;

【讨论】:

  • 感谢您的尝试,但仍然给了我同样的错误!
  • IBM 是否有一个 IDE,您可以在其中测试原始字符串中的相同值?
  • 我通过在 SQL 字符串末尾添加 ; 更新了我的回复
  • 仍然发生。一样。我很困惑为什么,你的回答对我来说很有意义,哈哈。是的,他们确实这样做了,它似乎在那里工作,代码有问题,想知道为什么....
  • 也许控制台记录您的查询,看看它是否符合您的预期?
【解决方案2】:

原来,这是一个愚蠢的错误。当我将数据插入数据库时​​,我在描述列中添加了一个',这让整个事情都被抛弃了。谢谢大家4的帮助

【讨论】: