Как я могу вставить части массива в MySQL?

0

У меня есть массив в Perl, как и следующий (только намного больше). Мой массив называется @sqlInsert

element1 В С

ELEMENT2 В С

element3 В С

Я хочу заполнить таблицу MySQL информацией в этих данных. Так что действительно, я хочу, чтобы одна строка:

 for ($count=0; $count<@arrayInsert; $count++) {
      INSERT INTO table values ("sqlInsert[$i]","sqlInsert[$i+1]","sqlInsert[$i+2]","sqlInsert[$i+3]")
 }

Любые указатели?

  • 0
    Кнопка с двоичным файлом означает «форматировать как код».
Теги:
arrays

1 ответ

3

Используйте заполнители DBI и...

... срез массива:

 my $sth = $dbh->prepare( 'INSERT INTO table VALUES ( ?, ?, ?, ? )' );

 $sth->execute( @sqlInsert[ $n .. $m ] );

... или сплайсинг:

 while( @sqlInsert ) {
      $sth->execute( splice @sqlInsert, 0, $length, () );
      }

Может быть проще создать структуру данных, такую ​​как массив массивов, который уже группирует элементы для каждой структуры:

 foreach my $ref ( @sqlInsert ) {
      $sth->execute( @$ref );
      } 
  • 0
    Спасибо за ответ, Брайан ... Я пошел с твоим первым решением. Однако, вот ошибка, я получаю:> Использование неинициализированного значения в диапазоне (или флопе) в строке 56 sqlInsert.pl.> Использование неинициализированного значения в диапазоне (или флопе) в строке 56 sqlInsert.pl.> Аргумент "" не является числовым в срезе массива в строке 56 sqlInsert.pl.> DBD :: mysql :: st выполнить не удалось: вызывается с 1 связывающими переменными, когда 4 необходимо в строке 56 sqlInsert.pl. Вот моя строка 56:> $ sth -> выполнить (@td [$ n .. $ m]);
  • 3
    Я заказал хрустальный шар из Амазонки. Когда он попадет сюда, я посмотрю ваш код. :)
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню