MySQL查询在Ruby中写入NULL的大量块

MySQL查询在Ruby中写入NULL的大量块,mysql,ruby,block,Mysql,Ruby,Block,我正在编写一段代码,将来自4个不同的数据写入表中4个不同的MySQL行 编辑:我应该注意,这四个块嵌套在一个循环中。我发现它将每个db.query堆叠在前面的一个之上,因为它为每个db.query生成一个新ID。所以,代码正在工作……只是没有达到预期的效果。基本上,表中的一行应该包含a、b、c和d的列和相应数据。如何使用这样的多个块并确保它们都写入同一行 代码看起来有点像这样 1.upto(5) do |num| a.each do |a| puts a db.q

我正在编写一段代码,将来自4个不同
的数据写入表中4个不同的MySQL行

编辑:我应该注意,这四个块嵌套在一个循环中。我发现它将每个db.query堆叠在前面的一个之上,因为它为每个db.query生成一个新ID。所以,代码正在工作……只是没有达到预期的效果。基本上,表中的一行应该包含a、b、c和d的列和相应数据。如何使用这样的多个块并确保它们都写入同一行

代码看起来有点像这样

1.upto(5) do |num|
    a.each do |a|
      puts a
      db.query("INSERT INTO Table(Column1) VALUES('#{a}')")
    end

    b.each do |b|
      puts b
     db.query("INSERT INTO Table(Column2) VALUES('#{b}')")
    end

    c.each do |c|
      puts c
      db.query("INSERT INTO Table(Column3) VALUES('#{c}')")
    end

    d.each do |d|
      puts d
      db.query("INSERT INTO Table(Column4) VALUES('#{d}')")
    end
end
显然,这只是一个例子,但块与此没有太大区别

有几件事

首先,是的,我需要这四个块和
。每个
,因为我用它们做不同的事情,我不能在一个块中完成所有的事情

其次,我知道这些块中的每一个都是“正确的”,因为如果我注释掉它们中的一个,它将正确地执行一个块的写操作——写入数据库,等等。所有的块都没有注释,就像它们应该的那样,它只将块'a'写入数据库,其余块不写入任何内容,将行保留为空

“puts”命令的输出与预期完全一致——每个块都在前一个块之后执行,只是在尝试执行query()方法时出现了一个问题


有什么想法吗?

我以前从未使用过Ruby,但在将其用于后续块之前,您可能会遇到处理查询对象或重新正确初始化查询对象的问题


尝试重新初始化查询对象。

我编辑了我的原始帖子。事实证明,每个块都会做它自己的事情并写入数据库,但由于我在每个块中进行了多次查询,每次都会生成一个唯一的ID,所以不是像我希望的那样将4种不同类型的数据写入一行,这是在表中将它们堆叠在一起。如果您坚持这样做,而不是使用数组构建查询并对每条记录执行一次插入,那么您可以执行
SELECT LAST\u insert\u ID()
在第一个块中,并使后续块为具有该ID的记录的各自列执行更新。您应该做的是,正如我所说的,构建一个数据数组,以一次插入并提交所有数据。在这里发布您的实际代码,让我们来帮助您。我只是将它们存储在一个数组中,效果很好。非常感谢。