Chinaunix首页 | 论坛 | 博客
  • 博客访问: 109970
  • 博文数量: 39
  • 博客积分: 2530
  • 博客等级: 少校
  • 技术积分: 355
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-01 17:34
文章分类
文章存档

2011年(1)

2010年(28)

2009年(2)

2008年(8)

我的朋友

分类:

2008-07-22 10:16:57

 
 

 
  my $testdb = DBI->connect( "dbi:Sybase:server=DBIP;database=DB",
                             "user","password",{AutoCommit=>0} )
                             or die "$DBI::errstr\n";
  my $sth = $testdb->prepare (qq{insert into orders (order_id) values (?)});
  foreach my $num (1..1000) {
        $sth->execute("$num");
        $num++;
  }
  $sth->commit();
  $testdb->disconnect();
 
 
请注意这个INSERT 查询中的‘?’就是一个占位符。调用execute( ) 时,将查询发送给,传递这个值来代替占位符。一般来说,如果发现在循环内部调用了do( ),应该在循环前调用prepare( ),并在这个循环内部调用execute( ) 更好一些。

  有关占位符的一些注意事项:

  在查询字符串内,不要在引号中封装占位符字符。如果这样做,不能识别为占位符。

  不要使用quote( ) 方法来指定占位符的值,否则将在插入的值中得到额外的引号。

  在查询字符串中可以有一个以上的占位符,但是要确保占位符的标记符与传递给execute( ) 的值一样多。

  每个占位符都必须指定一个单独的值,而不是一列值。为了将NULL 指定为占位符,应该使用undef。

阅读(1365) | 评论(0) | 转发(0) |
0

上一篇:PERL unpack Function

下一篇:Perl Unicode全攻略

给主人留下些什么吧!~~