javascript for 循环只返回最后一个元素

标签 javascript mysql arrays for-loop foreach

为什么循环只返回最后一个值?

有人可以帮我获取SQL插入中返回的所有值

tableau.forEach(function(obj) {

    for(let i = 0; i < obj.produits.length; i++) {
        let bd_nom = obj.produits[ii].nom
        let bd_description = obj.produits[ii].description
        let bd_titre = obj.titre

        records = [[bd_nom, bd_description, bd_titre]]

        con.connect(function(err) {
            let sql = "INSERT INTO scrapeded (nom, text, titre) VALUES ?";
            con.query(sql, [records], function (err, result) {
                console.log(result)
                console.log("Nombre de rangée affectée : " + result.affectedRows)
                console.log("Nombre d'enregistrement affectée avec avertissement : " + result.warningCount)
                console.log("Message du serveur mySQL : " + result.message)
            })
         })
      }
  })

最佳答案

您在每次迭代中隐式分配和重新分配给全局变量records。因此,当异步查询开始时,主线程已结束,records 仍保留为其分配的最后一个值。

使用 const 声明它,以确保每次迭代都有一个新的绑定(bind)。

此外,无需声明一个数组,然后立即对其进行解构以选择第一个元素 - 相反,只需将 records 声明为包含两个项目的一维数组即可:

tableau.forEach(function(obj) {
  for(let i = 0; i < obj.produits.length; i++) {
    let bd_nom = obj.produits[ii].nom
    let bd_description = obj.produits[ii].description
    let bd_titre = obj.titre

    const records = [bd_nom, bd_description, bd_titre]

    con.connect(function(err) {
      let sql = "INSERT INTO scrapeded (nom, text, titre) VALUES ?";
      con.query(sql, records, function (err, result) {
        console.log(result)
        console.log("Nombre de rangée affectée : " + result.affectedRows)
        console.log("Nombre d'enregistrement affectée avec avertissement : " + result.warningCount)
        console.log("Message du serveur mySQL : " + result.message)
      })
    })
  }
})

关于javascript for 循环只返回最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50789562/

相关文章:

javascript - 如何使 <option> 的宽度仅覆盖其内容

javascript - 创建带闭包的 slider

python - 在 django 中创建数组后如何删除 GET url 参数?

mysql - 显示 id 并计算相同的外键

php - 更新了查询,显示 PDO 中的旧数据

c - malloc、calloc 和动态数组

c - 如何动态填充指向我创建的结构的指针数组?

javascript - 获取拖动元素数组中的位置javascript

javascript - Quasar 显示来自对象的存储对象的表行

mysql - 'concat' 两个不同的 COUNT(column) WHERE 列是否可以有两个不同的值和不同的总计?