Многочисленные блоки с написанием запросов MySQL NULL в Ruby - PullRequest
0 голосов
/ 23 февраля 2012

Я работаю над фрагментом кода, который записывает данные из 4 разных блоков .each в 4 разные строки MySQL в таблице.

Редактировать : я должен отметить, что эти четыре блока вложены в один цикл. Я понял, что он помещает каждый 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

Очевидно, что это всего лишь пример, но блоки на самом деле мало чем отличаются от этого.

Несколько вещей.

Во-первых, да, мне нужно иметь эти четыре блока с .each, потому что я делаю с ними разные вещи, которые я не могу просто сделать все в одном блоке.

Во-вторых, я знаю, что каждый из этих блоков является «правильным», потому что, если я закомментирую все из них, кроме одного, будет записывать, выполняет этот один блок правильно - запись в базу данных и т.д. все блоков без комментариев , как они должны быть, он только записывает блок 'a' в базу данных и остальные блоки ничего не пишите, оставляя строки NULL.

Команды 'put' выводятся совершенно нормально, как и ожидалось - каждый блок, выполняющийся после предыдущего, есть проблема, когда он пытается выполнить метод query ().

Есть идеи?

1 Ответ

1 голос
/ 23 февраля 2012

Я никогда раньше не использовал Ruby, но, возможно, у вас есть проблема с удалением объекта запроса или его правильной инициализацией перед использованием его для последующих блоков?

Попробуйте повторно инициализировать объект запроса.

...