删除和插入行

3pmvbmvn  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(365)

我必须更新一个表中的多行(最多32行左右)。当前我的代码可以删除指定的行,但不能插入。我错过什么了吗?我的代码如下所示:

connection.query("DELETE FROM items WHERE record_id = ?", id, function (err, result) {
    if(err)
    { console.log("ERROR UPDATE" + err); }
    else
    { 
        console.log("entered UPDATE");
        // Loop through Hour Difference 
        for (var i = 1; i <= hours; i++) {

            // Avoiding Add in the first iteration
            if (i != 1) {
              start_date_time.add(1, "hours");
            }

          // Convert Date Format to MYSQL DateTime Format
          var myDate3 = moment(start_date_time.format('YYYY-MM-DD HH:mm:ss')).format("YYYY-MM-DD HH:mm:ss");
          console.log('Index update [' + i + ']: ' + myDate3);

          var data = {
              name: req.body.site_name,
              remarks: req.body.remarks,
              date_part: myDate3,
              record_id: id
          }

          connection.query("INSERT INTO items SET ?", [data], function (err, result) {
              if (err) {
                  console.log(err);
              } else {
                  console.log('Index [' + i + ']: INSERTED to update');
              }
          });
        }
    }
});
uqdfh47h

uqdfh47h1#

您的insert查询不正确。插入查询的正确语法是,

INSERT INTO TABLE_NAME (column1, column2, column3,...columnN)  
VALUES (value1, value2, value3,...valueN);

读取sql insert into语句。
如果您正在使用 SET 它应该是一个更新查询。更新查询的正确语法是,

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

读取sql update语句

jtw3ybtb

jtw3ybtb2#

所以在您的示例中,您同时使用异步和同步代码,这是个坏主意。
同时感谢@roshana你的查询不好,所以我修正了它。
要解决这个问题,可以使用两种方法。
使用异步/等待
使用承诺
下面是一个基本的例子:
使用这两种方法

async function doYourQueries (id, hours, req) {
 try {
     //this will wait until query finishes correctly, otherwise it will throw error.
     let deleteData = await connection.query("DELETE FROM items WHERE record_id = ?", id);

     let insertQueries = [];
     for (var i = 1; i <= hours; i++) {
         if (i != 1) {
             start_date_time.add(1, "hours");
         }
         let myDate3 = moment(start_date_time.format('YYYY-MM-DD HH:mm:ss')).format("YYYY-MM-DD HH:mm:ss");
         console.log('Index update [' + i + ']: ' + myDate3);
         let data = [req.body.site_name,
             req.body.remarks,
             myDate3,
             id
         ];
 //in here col1, colN need to be changed to your table column names
         insertQueries.push(connection.query("INSERT INTO items (col1, col2, col3, col4) VALUES (?,?,?,?)", data));
     }
     //run promise all. Result of all queries will be in allUpdates array.
     let allInserts = await Promise.all(insertQueries);
     console.log("We should be done right now.")
 }
 catch(err) {
     console.log("We got error in execution steps");
     throw err;
 }
}

你也可以这样做。

doYourQueries(id, hours, req)
  .then(res => console.log("All good")
  .catch(err => console.log("OOPS we got error");

希望这有帮助。

相关问题