【问题标题】:How can I insert parts of an array into MySQL?如何将数组的一部分插入 MySQL?
【发布时间】:2011-05-05 08:24:18
【问题描述】:

我在 Perl 中有一个如下所示的数组(只是更大)。我的数组被称为@sqlInsert

元素1 一种 乙 C

元素2 一种 乙 C

元素3 一种 乙 C

我想用这个数据中的信息填充一个 MySQL 表。所以真的,我想要一排:

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

任何指针?

【问题讨论】:

  • 带有二进制的按钮表示“格式为代码”。

标签: mysql arrays perl


【解决方案1】:

使用DBI placeholders 和...

...一个数组切片:

 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 );
      } 

【讨论】:

  • 感谢您的回复,Brian ... 我选择了您的第一个解决方案。但是,这是错误,我得到:>在 sqlInsert.pl 第 56 行使用范围(或触发器)中的未初始化值。>在 sqlInsert.pl 第 56 行使用范围(或触发器)中的未初始化值。>参数“”在 sqlInsert.pl 第 56 行的数组切片中不是数字。>DBD::mysql::st 执行失败:在 sqlInsert.pl 第 56 行需要 4 时使用 1 个绑定变量调用。这是我的第 56 行:> $sth ->执行(@td[$n..$m]);
  • 我从亚马逊订购了一个水晶球。当它到达这里时,我会看看你的代码。 :)
  • 老兄,我可能活该:>#Auth >$platform = "mysql"; >$数据库=“分贝”; >$host = "本地主机"; >$用户=“根”; >#连接数据库 >$DBIconnect = DBI->connect($dsn, $user); >my $sth = $DBIconnect->prepare('INSERT INTO table VALUES (?, ?, ?, ?)'); >$sth->execute(@sqlInsert[$n..$m]); ------ 你能告诉我 $n ... $m 是做什么的吗?
  • 如果您需要学习基础知识,您可能需要从 Learning Perl 开始。我不会尝试阅读 cmets 中的代码。用代码更新你的问题。
  • @poutine:一天内两次我已经向您指出了文档:请在perldoc perlop 中查找..。如果您以前从未这样做过,请在命令行中输入 perldoc perl,然后惊叹于触手可及的所有文档。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-24
  • 2018-03-11
  • 2018-02-01
  • 2016-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多