为什么更新查询在此功能中不起作用?

时间:2019-06-11 09:49:27

标签: mysql sql node.js express

我想在代码中切换公司的激活状态。因此,我首先选择activation_status,对其进行切换,然后触发更新查询。但这表明con.query1()不是函数。

我检查了所有可能仍然无法找到的错误。

我在许多网站上进行了搜索,但都表示这将是拼写错误。

var val;
app.post("/edit/company", (req, res) => {
  let comid = req.body.comid;
  let sql = "SELECT is_active from tblcompany where cid='" + comid + "'";
  let query = con.query(sql, (err, result) => {
    if (err) throw err;
    val = result[0].is_active;

    if (val == "1") val = 0;
    else val = 1;

    console.log("Value of Activation Status: " + val);
  });
  console.log("Value of activation status:" + val);
  console.log("Value of Company" + comid);

  let sql1 =
    "UPDATE tblcompany SET is_active=" + val + " where cid=" + comid + "";
  let query1 = con.query1(sql1, (err, result) => {
    if (err) throw err;
    console.log(result);
    // res.send(JSON.stringify(result));
  });
});

3 个答案:

答案 0 :(得分:0)

您可以仅使用SQL来避免进行某些检查

  UPDATE tblcompany SET is_active =  case when is_active  = 1 then 0 else 1 end 
  WHERE ......

,您应该使用con.query()..not query1

答案 1 :(得分:0)

您只能使用一个更新查询来切换is_active字段中的值。

更新tblcompany SET is_active = IF(is_active = 1,0,1),其中cid ='“ + comid +”';

没有与conn(conn.query1)一起用作query1的功能。您必须使用相同的查询功能来执行sql查询。

conn.query(“ sql查询”,callbackFunction)

答案 2 :(得分:0)

您可以使用:

UPDATE tblcompany
    SET is_active = 1 - is_active
    WHERE cid = ?;

?参数占位符。您应该学习如何使用参数将值传递给查询。

您也可以将其表示为:

UPDATE tblcompany
    SET is_active = NOT is_active
    WHERE cid = ?;